commit 8206d24c7eb9c4887efcb115ba65d79cb8c026e8 Author: Ralimist <28601907+Teoxoy@users.noreply.github.com> Date: Thu Mar 29 07:54:56 2018 +0200 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..99786b1b --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules +.wwp-cache +dist +*.log +parser/temp +parser/temp.* diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..a83e693f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Tanasoaia Teodor Andrei + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..5328ef19 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# factorio-blueprint-editor + +A [Factorio](https://www.factorio.com/) blueprint editor and renderer webapp + +# TODO: +- ctrl + click to add modules +- implement more entity settings (filters, conditions) +- edit bp label and icons +- put entityInfo icon backgrounds on another layer +- pipe window +- implement the other cursorBoxes +- overlay for turrets +- show electricity-icon-unplugged for entities that are not connected to a power pole +- bp manager (manage bps and books in an editor + placement of new blueprint in an allready loaded bp) +- show bp inputs (show icons for belts) +- throughput calculator/bp analyzer/bottleneck detector +- highlight lone underground pipes/belts +- train-stop station name +- tiles support +- poles range, wires and rotations +- rotate bp +- implement circuit_wire_max_distance with visualization ((x - center_x)^2 + (y - center_y)^2 <= radius^2) +- rail endings +- rail custom bounding box +- rail rotations +- belt endings diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..7d842428 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14985 @@ +{ + "name": "factorio-blueprint-editor", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.42.tgz", + "integrity": "sha512-L8i94FLSyaLQpRfDo/qqSm8Ndb44zMtXParXo0MebJICG1zoCCL4+GkzUOlB4BNTRSXXQdb3feam/qw7bKPipQ==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.42" + } + }, + "@babel/core": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.42.tgz", + "integrity": "sha512-jcjZRewF/xqROfbk8EGyWlykaIR3IwrcefjWHu8xh4QnULSv3nfkjPM35v1itDgAT4/Jj5b4mPf4eZSC2HoRQA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.42", + "@babel/generator": "7.0.0-beta.42", + "@babel/helpers": "7.0.0-beta.42", + "@babel/template": "7.0.0-beta.42", + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42", + "babylon": "7.0.0-beta.42", + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "resolve": "1.6.0", + "semver": "5.5.0", + "source-map": "0.5.7" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.42.tgz", + "integrity": "sha512-9x3zS4nG/6GAvJWB8fAK+5g/Di36xdubB43dMNSucNJTwPvmyfCippir/0I8zyG+ID66hLCLi8V9bomlWRYaHA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42", + "jsesc": "2.5.1", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.42.tgz", + "integrity": "sha512-2lmcB7mHRSXZjDV9fdnWGRco+5fbI0PdUtsL7mNA2GtJs0GPoKdV3sCx0N4cpzG2YRR4dNCiB2riYIrzWjmQ1Q==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.42.tgz", + "integrity": "sha512-lI14OS85dMAvsjTNTLrk3qqqvmy4CNxgXGpWkjMuKlYzwnC7LQvdrdH7wf3CBl8C0GSZHbgvADMUtrKiNjxJ5w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-call-delegate": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.42.tgz", + "integrity": "sha512-iGZJrRSKIvla9m8VJNv8wlbPReOLmVqFTpefl07v6e5cMPvP2XOgVWR2B4HZ9UwVo7Lx8rPAQ8/UZgjvq+pJ+A==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0-beta.42", + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-define-map": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.42.tgz", + "integrity": "sha512-MKaHNaciAiPc7q4AS2XRqk+I0d2ADryuIxd6r0EykkQ57w2nQxFx/CTWWQEnob9OSAP5dPO1stWIZ9j/VeKtIQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42", + "lodash": "4.17.5" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.42.tgz", + "integrity": "sha512-fT1kVF2PoogggBT9QBgb4IXjbpC3VzFh1sJ6p/k3fZhOXbyqqco7oQ6lzvcIAO6rA7b15/iaIyLj0E+SLCHbwQ==", + "dev": true, + "requires": { + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.42.tgz", + "integrity": "sha512-6IZ+kkPypwJrnmNzI3y31qAps2kXoPtCE241SvBva2YzB0n/YORWx2YM0jHPYOJBU9Xx5KkUhOKuWkeXZQgtTA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.42", + "@babel/template": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.42.tgz", + "integrity": "sha512-hF5KKcn+V/5PwU7KZ1aVwo535woLC9eV+djaoyNPZeMMJ2s+8bZlEa66Tarei0T68VRL5LXIs1Ao4hSabSkpBg==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.42.tgz", + "integrity": "sha512-07NJrcvE2a5oOYiQUzSzih21R6nOpfoIe9saelKxORKXr9cOXcpoLXDi9XIAbRJoww8hqp57JbQxRK09FltZhQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.42.tgz", + "integrity": "sha512-0kTX0cjuVKUKDJmHjmAb504kNrwae0Ja32hGii7zSHDKm0tVZvvpT8Cc1yYHo6UsIkUmzEvfGwIrNYemx1jTtQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42", + "lodash": "4.17.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.42.tgz", + "integrity": "sha512-XfCGsf6ijExiXw+oKL1Cp7VJttvgq8qalTGRqz4pviVNEjHU89Pfjsi1K/shdy5x4x+PiTSqn4zZ2PKfVp+vgg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.42", + "@babel/helper-simple-access": "7.0.0-beta.42", + "@babel/helper-split-export-declaration": "7.0.0-beta.42", + "@babel/template": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42", + "lodash": "4.17.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.42.tgz", + "integrity": "sha512-4Sssg3iFnLH/1fZQFCPNJ7ISZzrRwq/X8/T5OaURGP3NMVTR4mnEUqrc3v8/SfL3pfa57q3Fe4zIC2h7FuPkww==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.42.tgz", + "integrity": "sha512-hZLw8Iz9/YOxI9mgWyPOP1S84OcdQo1WFkZrS1sSf45g16sEb4dVslds2uvZgmx9BiG94PoWyABGf48Py6D6CA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.42.tgz", + "integrity": "sha512-QdwTsTPjJ63StltU6cEtqmB0Lc+L/OkK9Pz2bL9rylDF3UloyXinBA+SI/FkVyXi5HhDbBRf4T/OeVhWrsK68A==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.42.tgz", + "integrity": "sha512-At+ipbHRYoN0AaafqPvTPqyVYi+beantKZ2orCYSb/AzP2+JywaWlOPH0wyXLOGzjkJX548Is4cV2wGbEG7++Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.42", + "@babel/helper-wrap-function": "7.0.0-beta.42", + "@babel/template": "7.0.0-beta.42", + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-replace-supers": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.42.tgz", + "integrity": "sha512-5OwdkTm7TaEBiBMOUV97j8a2goD3+avek9EOl/UdE/CYdtdQ/8RPdUPqtqXApay30aZ/EjIpBItcNlBtt29WBw==", + "dev": true, + "requires": { + "@babel/helper-optimise-call-expression": "7.0.0-beta.42", + "@babel/template": "7.0.0-beta.42", + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-simple-access": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.42.tgz", + "integrity": "sha512-SK1nb/sx+Q/0N8USPR+/5G1D1U9tCo82MzJknmK7X4yexDacHmDHtqNP7xqUlSSo3xfMfyHgT7mAH17Cwik/gA==", + "dev": true, + "requires": { + "@babel/template": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42", + "lodash": "4.17.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.42.tgz", + "integrity": "sha512-2r8pZG6SAJTTaI2OhxCmz5PKlMUPY5adOHrHtb1gM3ibJPDOzPAeOQNzItdxNnM33jjRakEGitXX6iYg7Sz73w==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helper-wrap-function": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.42.tgz", + "integrity": "sha512-jpZDbZROEw2HfmlImLXDB7BFoyo6M/Wn8jOOc1+JfCpg2uaZ+n6Q0C3sA6mCN6o7ZgpJkgT7IHQwdB3RMV6KLA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.42", + "@babel/template": "7.0.0-beta.42", + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/helpers": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.42.tgz", + "integrity": "sha512-att9SiG9GxOUdjai87LqjSstgNsdo1nXiGu+Eh078zwRiN8bM5Ww8vrbYkAm9PF4HaW6OzOKqyKxv595RT79bA==", + "dev": true, + "requires": { + "@babel/template": "7.0.0-beta.42", + "@babel/traverse": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.42.tgz", + "integrity": "sha512-X3Ur/A/lIbbP8W0pmwgqtDXIxhQmxPaiwY9SKP7kF9wvZfjZRwMvbJE92ozUhF3UDK3DCKaV7oGqmI1rP/zqWA==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.42.tgz", + "integrity": "sha512-fPPsSCajWzefDSb49JEeZfd/UeMK3xEQSRAz/H3BZ1uaRatwNNZoOJq4/WRH/xDeISmYUdkLRtqs39VPWLKYVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.42", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.42" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.42.tgz", + "integrity": "sha512-L4z5R8k3GxQKVYE2zGwftQ9K/IIIXMZKnY4C0lDyyMJAVk+H+cFUD0NfD4KTyZACc8DPqjkw6aEtC/AKCKUvEA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.42" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.42.tgz", + "integrity": "sha512-hD8HTOKzLqMXwKkqX+Qiig8aqsCoZ9k9Y0I3zLjkpYh7HBPoPhUhlN6McxtPHGRjM/qBCNcLCwtWuJetK/cNZg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.42" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.42.tgz", + "integrity": "sha512-aUEpQFuQydhs20dQSkz7edWkRaNHt8rVfcqHy5ykR4dqflq7+EclnuljuzIS+MJ3V8i5cyLMEXv/W1uWWf7UGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-regex": "7.0.0-beta.42", + "regexpu-core": "4.1.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.42.tgz", + "integrity": "sha512-k6oVMsmY/mcp+rPRcK4dJL/J1ahtIRucXtNHNvAVRV9WFc7G3r1rrb1GlM4iNHareXBNdRlf7mkxyVaVpyJ3TQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.42.tgz", + "integrity": "sha512-Zhz6MdSpEviY3UFh/DUlrvf/Tn4wWosHXrnR52PBRtP/8ESWVaFuk57xWcBon3jJh0z5hYyRUr+D0wR7W7ZmnQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.42.tgz", + "integrity": "sha512-TXJpGMX/M9r0tkJPgZtoaBCdrhFMeAZtOiwNtVf5dWoA6TOmDwnnnbaUqynbBZm16jE7quWW5VhfFjDlOP1vMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.42.tgz", + "integrity": "sha512-/tpAo2Ur8m32U9pBcGQ6JKplWNEh462zxCnwVKL9yVwG02lttC4QSYBvreRK1wBidDz8JgRZFGGeB9N4l23/Sg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.42.tgz", + "integrity": "sha512-TTu8z0xz/mS8H98nCVw3wp86RSzdvUhtM4hX32sItrauJX1X8shVZDKbDtG8ZdA1FMKLgfvmn/hxtPOqjOkkpw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.42.tgz", + "integrity": "sha512-Ib3bSf7pYLbqe+46RrJFJae1DrNYvIrGleYjzaN/MFYNaG9ePaOevSBmFHPxuW1SM5l2tTloeu5a7mhs9h0oxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.42.tgz", + "integrity": "sha512-qvlAR1L7gZ1gqdj81a2AEfuar3lFsr7FSad4JrN5CJinQlVn/1eJe8oB1DQ7U8ocAzDDjn3tGit9lN7uKBWZsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "lodash": "4.17.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.42.tgz", + "integrity": "sha512-0GCv1wNyfMXKuaulype6+TF02Bxq/zQZ4NUbn2w9aQxzIZviAe1jcA7IRrNN2eVQL9L4oi8N6B26Wf8xFoBNrQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.42", + "@babel/helper-define-map": "7.0.0-beta.42", + "@babel/helper-function-name": "7.0.0-beta.42", + "@babel/helper-optimise-call-expression": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-replace-supers": "7.0.0-beta.42", + "@babel/helper-split-export-declaration": "7.0.0-beta.42", + "globals": "11.4.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.42.tgz", + "integrity": "sha512-WYGXfe2uo2FdACubMhwV6Oq1Zx3SNSeBUHRe2X53WKbIKLMZlxRR5GfoLv4V2CeDGHL3mb97wYhmXSb56bIXeg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.42.tgz", + "integrity": "sha512-G3hwLdgeKCZ8EWqwMqeOEoXxRBc5aJthMUD5kN7sAIko+lvwIVQ0do9Op/+DAGVnrvC+g0Ool2Mihcej2NsCPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.42.tgz", + "integrity": "sha512-g/XbJzib6qmbHOJv/2n/bVKLcfJUBRSo9zO73O7lvJEYh8JvHWM/oVU829ztVPpdPT3xgHMiTVhnV/O5r5dYNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-regex": "7.0.0-beta.42", + "regexpu-core": "4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.42.tgz", + "integrity": "sha512-Nze+na6pnoZdrMtQv5Ct/i3031ib+kctDwt8KgcrtnOr52qUlbogPe1jY2WxpwSMtiowdPY93XsRFZeq6ogMTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.42.tgz", + "integrity": "sha512-ylnAziSEho282hxQROK5tbNtxm0sSoQaQS74OCSE52eFeDNqSNGapyiNiWMZ71gqs8q5aqYsPgfa/vTccLT7uA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.42.tgz", + "integrity": "sha512-pn+fmrr6pfXeEUMyx7JrKAOG/XCiABvXFOmQYqLoCl0POcW8sE75r8w/Lu2wHFayrNgDqR7/RCb7RW4h/U2u1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.42.tgz", + "integrity": "sha512-OopJXZQAgBsPUAHr49Z4S4X24XJa9Iu0zPUPCML9weHloyFnkw5SGQIDLC6BxxPOmqfiB49gfIuHjbtJfUsOJw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.42.tgz", + "integrity": "sha512-mWEayRwUCY3/u8LZpcdR96TiWqofP60jjfVZUJ6agK6ifwEBgamv1Db8syIwUCjaZww5bjyZqX61AmP4fx3dvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.42.tgz", + "integrity": "sha512-JCNM+WPKImpNHVLZG6x9F87AyX+K8KpMCkuCqyE7YgxAJWB+5FHVnpkdF6lprDilE/LXGwplmNb9OrWulMss2g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.42.tgz", + "integrity": "sha512-tCN0FFdTHaXpuJokvW8iWtbDpjKDNDO2dIyb8rr0GMQxsA62914e8oclcDUPEbC5iF5SCDEF0CmVHXbxnvANfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-simple-access": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.42.tgz", + "integrity": "sha512-IEN3HVHpMPWrnI2EAEHg0248+Axkg2nrdspajefIyeZMlrN0dUt0gDgVsZtza5PK/1a+RZlpli7dDgcA7heTMg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.42.tgz", + "integrity": "sha512-yOA2qnk4snRxkdgKDp6xN+by3V3z8q14cDf/aB0j36Jv2YqpDWUWMMWLQjabCEE/l7ptePBS4qbFH8dffCm4Tg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.42.tgz", + "integrity": "sha512-P2zwIIeTOev0Xjo//4p7ugtsWazIsycbs/T6I/ghiV2lREFxo9s93fygbXNXt5ALRPRWDthiAYIDA9n1vrgkVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.42.tgz", + "integrity": "sha512-d+gki0bYQtlleX4LnvpwjIkjmZScKQuHhDsD3N3nHLpwxbANp3YGtIfuf8dbY/PIbUKtd55/ErCvdsyuGlxAlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-replace-supers": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.42.tgz", + "integrity": "sha512-z2iXwael/zMHkOvvkJSirg1jIxGA00JOIwdERB+x+VGxLfLb+1IdyiytVw9+w5RTNSVAGYt6R4jhvUdAeQwMiQ==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "7.0.0-beta.42", + "@babel/helper-get-function-arity": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.42.tgz", + "integrity": "sha512-E1s/MBk8ztbXqxbeUvFH26x8vAWq/7qX3UdbB8fKoN3EX2Wg9+yXWyuI50jOhXOq7jfmbOrVe0BWoUOjCOqWPQ==", + "dev": true, + "requires": { + "regenerator-transform": "0.12.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.42.tgz", + "integrity": "sha512-GID8z2s6R/XOHgaoxrKBH+zdBOBqFJTDYDS91w30fJGiHxVM4qFVOpYDNIMxmsjqW6bKVHyLeHBezp0OHv+9QQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.42.tgz", + "integrity": "sha512-ZzWt7RvGcV+9DcOTBwE6ArNqDpUMpzZhCToj3UNtULol9gGBbrGgUK/LdGwGInj+Z2aIdOjbAMFtEuC6626lJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.42.tgz", + "integrity": "sha512-zQI5NhVfnSNNFiG8JhoXXzTV89aLTfHW22inWefATRmtqe64iHZ4bivBTkDbxt6X/St1yH0aZB+4XtBDZjzcKQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-regex": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.42.tgz", + "integrity": "sha512-sCQmaa8fd3uPdy/J/qOkvPtxo3RtiH6SyW5bzdnUSOQ3+ND3Bj4OfJNziZxJwZZ8Y40lHrM0dKxZ8YnihlCETQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.42.tgz", + "integrity": "sha512-cuDOzCv7kpMqaLypTEN90ErVmKUV3vjTuO8qzCGlmJMZwCcteTpxCiwISJLnAxcGtj++fMVY0vntbcj4nXf9XQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.42.tgz", + "integrity": "sha512-iqQ8bhkRPZE2Vl5gR7GF0x4xUVlkncMxr7ve7Rjp/TMzNbO3S2XLr+1SPu+B+U3fIPDDA4I97enw5YL5V7QFOA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/helper-regex": "7.0.0-beta.42", + "regexpu-core": "4.1.3" + } + }, + "@babel/preset-env": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.42.tgz", + "integrity": "sha512-DawmnYYDbOpMqq0H64iwtZJ7C1xjdwqJXBvAjRKv9WVnKPqZbMMli4JhwO30WnPELzOMGRwtLFAchPcEeyyCpQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.42", + "@babel/helper-plugin-utils": "7.0.0-beta.42", + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.42", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.42", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.42", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.42", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.42", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.42", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.42", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.42", + "@babel/plugin-transform-async-to-generator": "7.0.0-beta.42", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.42", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.42", + "@babel/plugin-transform-classes": "7.0.0-beta.42", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.42", + "@babel/plugin-transform-destructuring": "7.0.0-beta.42", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.42", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.42", + "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.42", + "@babel/plugin-transform-for-of": "7.0.0-beta.42", + "@babel/plugin-transform-function-name": "7.0.0-beta.42", + "@babel/plugin-transform-literals": "7.0.0-beta.42", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.42", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.42", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.42", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.42", + "@babel/plugin-transform-new-target": "7.0.0-beta.42", + "@babel/plugin-transform-object-super": "7.0.0-beta.42", + "@babel/plugin-transform-parameters": "7.0.0-beta.42", + "@babel/plugin-transform-regenerator": "7.0.0-beta.42", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.42", + "@babel/plugin-transform-spread": "7.0.0-beta.42", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.42", + "@babel/plugin-transform-template-literals": "7.0.0-beta.42", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.42", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.42", + "browserslist": "3.2.3", + "invariant": "2.2.4", + "semver": "5.5.0" + } + }, + "@babel/template": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.42.tgz", + "integrity": "sha512-EK7YdTe47j4VxlwNvz5bnlk5Jx/wWublnqfgOY2IuSNdxCQgXrLD34PfTnabGxywNSkJkcSo6jwr2JGT+S48dA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42", + "babylon": "7.0.0-beta.42", + "lodash": "4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.42.tgz", + "integrity": "sha512-DZwMuZBfYVIn/cxpXZzHDgKmarW/MWqplLv1k7QJYhK5r5l6GAac/DkKl75A0CjPYrD3VGco6H6ZQp12QaYKSw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.42", + "@babel/generator": "7.0.0-beta.42", + "@babel/helper-function-name": "7.0.0-beta.42", + "@babel/helper-split-export-declaration": "7.0.0-beta.42", + "@babel/types": "7.0.0-beta.42", + "babylon": "7.0.0-beta.42", + "debug": "3.1.0", + "globals": "11.4.0", + "invariant": "2.2.4", + "lodash": "4.17.5" + } + }, + "@babel/types": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz", + "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" + } + }, + "@pixi/filter-adjustment": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@pixi/filter-adjustment/-/filter-adjustment-2.5.0.tgz", + "integrity": "sha1-VBrm9g/nTEPNbXS3g0fZfaShwgo=" + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@types/keyboardjs": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/@types/keyboardjs/-/keyboardjs-2.2.31.tgz", + "integrity": "sha512-AtqgGAdEUADxvQglI2J3XcIar0SYbH/WvORs4mbE4F52uuyqdv0O83K0ybYlf0P4c5gIJCxTvT2wMn4NOBzPsg==", + "dev": true + }, + "@types/node": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.1.tgz", + "integrity": "sha512-xwlHq5DXQFRpe+u6hmmNkzYk/3oxxqDp71a/AJMupOQYmxyaBetqrVMqdNlSQfbg7XTJYD8vARjf3Op06OzdtQ==", + "dev": true + }, + "@types/pixi.js": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/@types/pixi.js/-/pixi.js-4.7.2.tgz", + "integrity": "sha512-ybrqVdncNCa81fCYCqxz/CISyMbXl8usszNv0mwdeYDyfDqmemQHJtf4GtduHva+3suhItPc9Akr/WfV19zWiQ==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "5.5.3" + } + }, + "ajv": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "3.0.2" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "any-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.11.0" + } + }, + "array-parallel": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", + "integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=", + "dev": true, + "optional": true + }, + "array-series": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", + "integrity": "sha1-3103v8XC7wdV4qpPkv6ufUtaly8=", + "dev": true, + "optional": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "dev": true + }, + "author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000821", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000821", + "electron-to-chromium": "1.3.41" + } + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "8.0.0-beta.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.2.tgz", + "integrity": "sha512-P1zch1DvQy3RGmp/1CH78uPg5gTPQQ01S9r6ipCOWVamO0UIC8gnrx7m7LsUsXa470yB6IOZxhtEEwIUclRLNw==", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "6.18.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + } + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "6.24.1", + "babel-plugin-transform-export-extensions": "6.22.0", + "babel-preset-stage-2": "6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.4", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.4", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "7.0.0-beta.42", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.42.tgz", + "integrity": "sha512-h6E/OkkvcBw/JimbL0p8dIaxrcuQn3QmIYGC/GtJlRYif5LTKBYPHXYwqluJpfS/kOXoz0go+9mkmOVC0M+zWw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "base62": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.7.tgz", + "integrity": "sha512-ck0nDbXLEq2nD5jIcEzdpk07sYQ5P6z4NMTIgeQCFr5CCRZzmgUPlOes4o0k5pvEUQJnKO/D079ybzjpjIKf2Q==", + "dev": true + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "bfj-node4": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", + "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "check-types": "7.3.0", + "tryer": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "bignumber.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", + "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=", + "dev": true + }, + "bin-pack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bin-pack/-/bin-pack-1.0.1.tgz", + "integrity": "sha1-VW2jj4ZvKuvlbstF9ChJsISwxm8=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "binaryextensions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", + "dev": true + }, + "bit-twiddle": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", + "integrity": "sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4=" + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bmp-js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz", + "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.1", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.3.tgz", + "integrity": "sha512-cdpm0bFVz1KoRFuDTEk0IgxmZ2k2kTRKVlSQWf1RnxUe65GfjnMO30AxHpMkVv5wlPnpEYom7DhXwdMplKsKCw==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000821", + "electron-to-chromium": "1.3.41" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.11", + "isarray": "1.0.0" + } + }, + "buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "0.1.1", + "buffer-fill": "0.1.1" + } + }, + "buffer-alloc-unsafe": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-fill": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", + "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.2", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cache-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz", + "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mkdirp": "0.5.1", + "neo-async": "2.5.0", + "schema-utils": "0.4.5" + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.1", + "sort-keys": "2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + } + } + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000821", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000821", + "electron-to-chromium": "1.3.41" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000821", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000821.tgz", + "integrity": "sha1-P83GfERqlKnN2Egkik4+VLLadBk=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000821", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000821.tgz", + "integrity": "sha512-qyYay02wr/5k7PO86W+LKFaEUZfWIvT65PaXuPP16jkSpgZGIsSstHKiYAPVLjTj98j2WnWwZg8CjXPx7UIPYg==", + "dev": true + }, + "canvas": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-1.3.12.tgz", + "integrity": "sha1-Dm17eNbJcwzxEp0ROLKNbVJmfpM=", + "dev": true, + "optional": true, + "requires": { + "nan": "2.10.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "check-types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", + "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=", + "dev": true + }, + "cheerio": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", + "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=", + "dev": true, + "requires": { + "css-select": "1.0.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "lodash": "3.10.1" + }, + "dependencies": { + "css-select": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", + "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "1.0.0", + "domutils": "1.4.3", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", + "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=", + "dev": true + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", + "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + }, + "dependencies": { + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.1", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz", + "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "clean-webpack-plugin": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz", + "integrity": "sha512-M1Li5yLHECcN2MahoreuODul5LkjohJGFxLPTjl3j1ttKrF5rgjZET1SJduuqxLAuT1gAPOdkhg03qcaaU1KeA==", + "dev": true, + "requires": { + "rimraf": "2.6.2" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "2.0.1", + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.5" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.4", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "dev": true, + "requires": { + "commander": "2.15.1", + "detective": "4.7.1", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" + }, + "dependencies": { + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + } + } + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "1.1.0", + "minimatch": "3.0.4", + "p-limit": "1.2.0", + "serialize-javascript": "1.4.0" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "core-js": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz", + "integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.1", + "ripemd160": "2.0.1", + "sha.js": "2.4.11" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.1", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.11" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.1", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.2.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d3": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", + "dev": true + }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-conflict": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", + "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "defined": "1.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.1", + "readable-stream": "2.3.5", + "stream-shift": "1.0.0" + } + }, + "earcut": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.1.3.tgz", + "integrity": "sha512-AxdCdWUk1zzK/NuZ7e1ljj6IGC+VAdC3Qb7QQDsXpfNrc5IM8tL9nNXUmEGE6jRHTfZ10zhzRhtDmWVsR5pd3A==" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.8.tgz", + "integrity": "sha512-QIDZL54fyV8MDcAsO91BMH1ft2qGGaHIJsJIA/+t+7uvXol1dm413fPcUgUb4k8F/9457rx4/KFE4XfDifrQxQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.41", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.41.tgz", + "integrity": "sha1-fjNkPgDNhe39F+BBlPbQDnNzcjU=", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "tapable": "1.0.0" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "envify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", + "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", + "dev": true, + "requires": { + "jstransform": "11.0.3", + "through": "2.3.8" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "0.2.1", + "xtend": "4.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-lite": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.1.tgz", + "integrity": "sha1-R88IqNN9C2lM23s7F7UfqsZXYIY=", + "dev": true + }, + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "4.0.0-beta.0", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz", + "integrity": "sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.4.5", + "webpack-sources": "1.1.0" + } + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "favicons": { + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/favicons/-/favicons-4.8.6.tgz", + "integrity": "sha1-orE4AKs/7CcVvI8n+oQdA41HYeI=", + "dev": true, + "requires": { + "async": "1.5.2", + "cheerio": "0.19.0", + "clone": "1.0.4", + "colors": "1.1.2", + "harmony-reflect": "1.6.0", + "image-size": "0.4.0", + "jimp": "0.2.28", + "jsontoxml": "0.0.11", + "merge-defaults": "0.2.1", + "mkdirp": "0.5.1", + "node-rest-client": "1.8.0", + "require-directory": "2.1.1", + "svg2png": "3.0.1", + "through2": "2.0.3", + "tinycolor2": "1.4.1", + "to-ico": "1.1.5", + "underscore": "1.8.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fbjs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", + "integrity": "sha1-lja3cF9bqWhNRLcveDISVK/IYPc=", + "dev": true, + "requires": { + "core-js": "1.2.7", + "loose-envify": "1.3.1", + "promise": "7.3.1", + "ua-parser-js": "0.7.17", + "whatwg-fetch": "0.9.0" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "2.3.5" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "flow-parser": { + "version": "0.69.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.69.0.tgz", + "integrity": "sha1-N4tRKNbQtVSosvFqTKPhq5ZJ8A4=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.1", + "readable-stream": "2.3.5" + } + }, + "for-each": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", + "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", + "dev": true, + "requires": { + "is-function": "1.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.4.1.tgz", + "integrity": "sha512-UckdUYL51F5t9t/2Uqk0xatxz8Cf75a1THNIrDYajjcAcg2Q64SXNP7BTQPxXm0bU1chzjR3brXIaianbFqI3Q==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "chokidar": "1.7.0", + "lodash.endswith": "4.2.1", + "lodash.isfunction": "3.0.9", + "lodash.isstring": "4.0.1", + "lodash.startswith": "4.2.1", + "minimatch": "3.0.4", + "resolve": "1.6.0", + "tapable": "1.0.0", + "vue-parser": "1.1.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "readable-stream": "2.3.5" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.5" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "gh-got": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", + "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", + "dev": true, + "requires": { + "got": "7.1.0", + "is-plain-obj": "1.1.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + } + } + }, + "github-username": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", + "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", + "dev": true, + "requires": { + "gh-got": "6.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-all": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", + "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", + "dev": true, + "requires": { + "glob": "7.1.2", + "yargs": "1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", + "dev": true + }, + "yargs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", + "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", + "dev": true, + "requires": { + "minimist": "0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, + "globals": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", + "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "gm": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/gm/-/gm-1.22.0.tgz", + "integrity": "sha1-ZwvzaRrprkbK30cBLqEqxAqAJ8I=", + "dev": true, + "optional": true, + "requires": { + "array-parallel": "0.1.3", + "array-series": "0.1.5", + "debug": "2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "optional": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true, + "optional": true + } + } + }, + "google-closure-compiler": { + "version": "20170626.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20170626.0.0.tgz", + "integrity": "sha1-DSqXXTReGqE7N+VYMlCdWbqKh+A=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "vinyl": "2.1.0", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.2", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.1.2", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "google-closure-compiler-js": { + "version": "20170124.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20170124.0.0.tgz", + "integrity": "sha1-zXcpGhmkFY60H7JBaIpeUj4lA2Q=", + "dev": true, + "requires": { + "gulp-util": "3.0.8", + "minimist": "1.2.0", + "webpack-core": "0.6.9" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "got": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", + "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "mimic-response": "1.0.0", + "p-cancelable": "0.4.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "gown": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/gown/-/gown-0.1.6.tgz", + "integrity": "sha512-mvFc2BFm3TF8g2ldI1iHjDVvQTyWou2ngpTjHaxuiMneIgUHrgFsVOPzFSkf4ybQPrJWw4sfIBOSxK2KKhHFzA==", + "requires": { + "eventemitter3": "2.0.3", + "jaguarjs-jsdoc": "1.1.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "grouped-queue": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", + "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.2", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.1" + } + }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "pify": "3.0.0" + } + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "harmony-reflect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.0.tgz", + "integrity": "sha512-0kZ1XcoelFOLEjEtvWAZyq/1S55eDSieWEJwme311MNVNcRpvjlr2zA66kBV6WAB8C1XI1p1cXCnFPqd1BxlPg==", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "obuf": "1.1.2", + "readable-stream": "2.3.5", + "wbuf": "1.7.3" + } + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.12.tgz", + "integrity": "sha512-+N778qLf0RWBscD0TPGoYdeGNDZ0s76/0pQhY1/409EOudcENkm9IbSkk37RDyPdg/09GVHTKotU4ya93RF1Gg==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.11", + "commander": "2.15.1", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.16" + } + }, + "html-webpack-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.1.0.tgz", + "integrity": "sha1-bgK6rtsekGMQkX8DI5x5OnWvKIU=", + "dev": true, + "requires": { + "html-minifier": "3.5.12", + "loader-utils": "0.2.17", + "lodash": "4.17.5", + "pretty-error": "2.1.1", + "tapable": "1.0.0", + "toposort": "1.0.6", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", + "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA==", + "dev": true + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.5", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "6.0.21" + }, + "dependencies": { + "postcss": { + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "image-size": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.4.0.tgz", + "integrity": "sha1-1LTh9hlS5MvBzqmmsMkV/stwdRA=", + "dev": true + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "5.5.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "int64-buffer": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-scoped": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", + "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", + "dev": true, + "requires": { + "scoped-regex": "1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "ismobilejs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-0.4.1.tgz", + "integrity": "sha1-Gl8SbHD+05yT2jgPpiy65XI+fcI=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istextorbinary": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "dev": true, + "requires": { + "binaryextensions": "2.1.1", + "editions": "1.3.4", + "textextensions": "2.2.0" + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, + "jaguarjs-jsdoc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jaguarjs-jsdoc/-/jaguarjs-jsdoc-1.1.0.tgz", + "integrity": "sha1-Pjz/ljvRLU5D1STZxgZxTiv6KQE=", + "requires": { + "taffydb": "2.7.3", + "underscore": "1.8.3" + } + }, + "jimp": { + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", + "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", + "dev": true, + "requires": { + "bignumber.js": "2.4.0", + "bmp-js": "0.0.3", + "es6-promise": "3.3.1", + "exif-parser": "0.1.12", + "file-type": "3.9.0", + "jpeg-js": "0.2.0", + "load-bmfont": "1.3.0", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "pixelmatch": "4.0.2", + "pngjs": "3.3.2", + "read-chunk": "1.0.1", + "request": "2.85.0", + "stream-to-buffer": "0.1.0", + "tinycolor2": "1.4.1", + "url-regex": "3.2.0" + } + }, + "jpeg-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", + "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=", + "dev": true + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jscodeshift": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz", + "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "7.0.0-beta.42", + "colors": "1.1.2", + "flow-parser": "0.69.0", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "neo-async": "2.5.0", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.14.7", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" + } + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsontoxml": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/jsontoxml/-/jsontoxml-0.0.11.tgz", + "integrity": "sha1-Nzq1sgcL43N6X7PjL9G3uBhwyqQ=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "dev": true, + "requires": { + "base62": "1.2.7", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "dev": true + }, + "keyboardjs": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/keyboardjs/-/keyboardjs-2.4.1.tgz", + "integrity": "sha1-fFrShpWiG2xNBmaBwSc3amD5rNE=" + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "requires": { + "lodash": "4.17.5", + "webpack-sources": "1.1.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.8", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "load-bmfont": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.3.0.tgz", + "integrity": "sha1-u358cQ3mvK/LE8s7jIHgwBMey8k=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "mime": "1.6.0", + "parse-bmfont-ascii": "1.0.6", + "parse-bmfont-binary": "1.0.6", + "parse-bmfont-xml": "1.1.3", + "xhr": "2.4.1", + "xtend": "4.0.1" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.3.2" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loglevelnext": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.3.tgz", + "integrity": "sha512-OCxd/b78TijTB4b6zVqLbMrxhebyvdZKwqpL0VHUZ0pYhavXaPD4l6Xrr4n5xqTYWiqtb0i7ikSoJY/myQ/Org==", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.1" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", + "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "vinyl": "1.2.0", + "vinyl-file": "2.0.0" + } + }, + "mem-fs-editor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz", + "integrity": "sha1-3Qpuryu4prN3QAZ6pUnrUwEFr58=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "deep-extend": "0.4.2", + "ejs": "2.5.8", + "glob": "7.1.2", + "globby": "6.1.0", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "rimraf": "2.6.2", + "through2": "2.0.3", + "vinyl": "2.1.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.2", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.1.2", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.5" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + } + } + }, + "merge-defaults": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/merge-defaults/-/merge-defaults-0.2.1.tgz", + "integrity": "sha1-3UIkjrlrtqUVIXJDIccv+Vg93oA=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, + "mini-signals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mini-signals/-/mini-signals-1.2.0.tgz", + "integrity": "sha1-RbCAE8X65RokqhqTXNMXye1yHXQ=" + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "msgpack-lite": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", + "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", + "dev": true, + "requires": { + "event-lite": "0.1.1", + "ieee754": "1.1.11", + "int64-buffer": "0.1.10", + "isarray": "1.0.0" + } + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "dev": true + }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-dir": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", + "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", + "dev": true + }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.5", + "stream-browserify": "2.0.1", + "stream-http": "2.8.1", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-rest-client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/node-rest-client/-/node-rest-client-1.8.0.tgz", + "integrity": "sha1-jTxWa4F+JzlMtyc3g6Qcrv4+WVU=", + "dev": true, + "requires": { + "debug": "2.2.0", + "xml2js": "0.4.19" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "node-sprite-generator": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/node-sprite-generator/-/node-sprite-generator-0.10.2.tgz", + "integrity": "sha1-gE6QILk72N7MoQhVxgn0PeXbf8I=", + "dev": true, + "requires": { + "async": "1.2.0", + "bin-pack": "1.0.1", + "canvas": "1.3.12", + "glob": "5.0.10", + "gm": "1.22.0", + "jimp": "0.2.21", + "mkdirp": "0.5.1", + "underscore": "1.8.3" + }, + "dependencies": { + "async": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.2.0.tgz", + "integrity": "sha1-kClYD5PQWnyrJPUCyEcHrD71exA=", + "dev": true + }, + "bmp-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.1.tgz", + "integrity": "sha1-WtAUcJnROp84qnuZrx1ueGZu038=", + "dev": true + }, + "glob": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.10.tgz", + "integrity": "sha1-PuNQMZ8x81LO9omaSPa2t4NMaJk=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "2.0.10", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "jimp": { + "version": "0.2.21", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.21.tgz", + "integrity": "sha1-USKWDNXVvEGWqFNF9mozt9ruTrM=", + "dev": true, + "requires": { + "bignumber.js": "2.4.0", + "bmp-js": "0.0.1", + "es6-promise": "3.3.1", + "exif-parser": "0.1.12", + "file-type": "3.9.0", + "jpeg-js": "0.1.2", + "mime": "1.6.0", + "pixelmatch": "4.0.2", + "pngjs": "2.3.1", + "read-chunk": "1.0.1", + "request": "2.85.0", + "stream-to-buffer": "0.1.0", + "tinycolor2": "1.4.1", + "url-regex": "3.2.0" + } + }, + "jpeg-js": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz", + "integrity": "sha1-E1uZLAV1yYXPoPSUoyJ+0jhYPs4=", + "dev": true + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "pngjs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-2.3.1.tgz", + "integrity": "sha1-EdHhK5y2TWPjDBQ6Mw9MH1Z9qF8=", + "dev": true + } + } + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "normalize.css": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.0.tgz", + "integrity": "sha512-iXcbM3NWr0XkNyfiSBsoPezi+0V92P9nj84yVV1/UZxRUrGczgX/X91KMAGM0omWLY2+2Q1gKD/XRn4gQRDB2A==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.11.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-wcQJMk23VQAFdOYnF7pSTg3yvRsSmF3FBwuPf2MDE7e/AG4hoD5V+xxZkrhZEYZ6ZQezfu2qegprs0Z7Xc9xKA==", + "dev": true, + "requires": { + "cssnano": "3.10.0", + "last-call-webpack-plugin": "3.0.0" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.0.tgz", + "integrity": "sha512-/AodqPe1y/GYbhSlnMjxukLGQfQIgsmjSy2CXCNB96kg4ozKvmlovuHEKICToOO/yS3LLWgrWI1dFtFfrePS1g==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-lazy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", + "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.5" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", + "dev": true, + "requires": { + "author-regex": "1.0.0" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", + "dev": true + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", + "dev": true + }, + "parse-bmfont-xml": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz", + "integrity": "sha1-1rZqNxr9OcUAfZ8O6yYqTyzOe3w=", + "dev": true, + "requires": { + "xml-parse-from-string": "1.0.1", + "xml2js": "0.4.19" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "dev": true, + "requires": { + "for-each": "0.3.2", + "trim": "0.0.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse-png": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-1.1.2.tgz", + "integrity": "sha1-9cKtfHmTSQmGAgooTBmu5FlxH/I=", + "dev": true, + "requires": { + "pngjs": "3.3.2" + } + }, + "parse-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-uri/-/parse-uri-1.0.0.tgz", + "integrity": "sha1-KHLcwi8aeXrN4Vg9igrClVLdrCA=" + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "9.6.1" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.11" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "phantomjs-prebuilt": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", + "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", + "dev": true, + "requires": { + "es6-promise": "4.2.4", + "extract-zip": "1.6.6", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.85.0", + "request-progress": "2.0.1", + "which": "1.3.0" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dev": true, + "requires": { + "pngjs": "3.3.2" + } + }, + "pixi-gl-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/pixi-gl-core/-/pixi-gl-core-1.1.4.tgz", + "integrity": "sha1-i0tcQzsx5Bm8N53FZc4bg1qRs3I=" + }, + "pixi.js": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-4.7.1.tgz", + "integrity": "sha512-FILCk39E8GIqdSVacVS2cs/rpgXC76hImuU9kCl6MglKcZsBlAeDaC28nIaUPuctI1UNBKosq9NuVG7ffbGk+w==", + "requires": { + "bit-twiddle": "1.0.2", + "earcut": "2.1.3", + "eventemitter3": "2.0.3", + "ismobilejs": "0.4.1", + "object-assign": "4.1.1", + "pixi-gl-core": "1.1.4", + "remove-array-items": "1.0.0", + "resource-loader": "2.1.1" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "pngjs": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.2.tgz", + "integrity": "sha512-bVNd3LMXRzdo6s4ehr4XW2wFMu9cb40nPgHEjSSppm8/++Xc+g0b2QQb+SeDesgfANXbjydOr1or9YQ+pcCZPQ==", + "dev": true + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000821", + "electron-to-chromium": "1.3.41" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "6.0.21" + }, + "dependencies": { + "postcss": { + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.21" + }, + "dependencies": { + "postcss": { + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.21" + }, + "dependencies": { + "postcss": { + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.21" + }, + "dependencies": { + "postcss": { + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", + "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", + "integrity": "sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE=", + "dev": true, + "requires": { + "envify": "3.4.1", + "fbjs": "0.6.1" + } + }, + "react-dom": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.9.tgz", + "integrity": "sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM=", + "dev": true + }, + "read-chunk": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", + "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.5", + "set-immediate-shim": "1.0.1" + } + }, + "recast": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", + "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", + "dev": true, + "requires": { + "ast-types": "0.11.3", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.6.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz", + "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", + "dev": true, + "requires": { + "regenerate": "1.3.3" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz", + "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", + "dev": true, + "requires": { + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexpu-core": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", + "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regenerate-unicode-properties": "5.1.3", + "regjsgen": "0.3.0", + "regjsparser": "0.2.1", + "unicode-match-property-ecmascript": "1.0.3", + "unicode-match-property-value-ecmascript": "1.0.1" + } + }, + "regjsgen": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz", + "integrity": "sha1-DuSj6SdkMM2iXx54nqbBW4ewy0M=", + "dev": true + }, + "regjsparser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz", + "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-array-items": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remove-array-items/-/remove-array-items-1.0.0.tgz", + "integrity": "sha1-B79CyzMvTPboXq2DteToltIyayE=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true, + "requires": { + "throttleit": "1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resize-img": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/resize-img/-/resize-img-1.1.2.tgz", + "integrity": "sha1-+tZQ+vPvLFPqYxErwnLZXp2SVQ4=", + "dev": true, + "requires": { + "bmp-js": "0.0.1", + "file-type": "3.9.0", + "get-stream": "2.3.1", + "jimp": "0.2.28", + "jpeg-js": "0.1.2", + "parse-png": "1.1.2" + }, + "dependencies": { + "bmp-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.1.tgz", + "integrity": "sha1-WtAUcJnROp84qnuZrx1ueGZu038=", + "dev": true + }, + "jpeg-js": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz", + "integrity": "sha1-E1uZLAV1yYXPoPSUoyJ+0jhYPs4=", + "dev": true + } + } + }, + "resolve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resource-loader": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/resource-loader/-/resource-loader-2.1.1.tgz", + "integrity": "sha512-jRMGYUfa4AGk9ib45Wxc93lobhQVoiCUAUkWqsbb/fhGPge97YT1S8aC0xBEQpolMsrdmB3o7SH8VmIEvIDOLA==", + "requires": { + "mini-signals": "1.2.0", + "parse-uri": "1.0.0" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.1" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "rxjs": { + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.8.tgz", + "integrity": "sha512-Bz7qou7VAIoGiglJZbzbXa4vpX5BmTTN2Dj/se6+SwADtw4SihqBIiEa7VmTXJ8pynvq0iFr5Gx9VLyye1rIxQ==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "ajv-keywords": "3.1.0" + } + }, + "scoped-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", + "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", + "dev": true + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", + "dev": true, + "requires": { + "node-forge": "0.7.1" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.18", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", + "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.1", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.1.0", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "2.3.5", + "safe-buffer": "5.1.1", + "wbuf": "1.7.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "readable-stream": "2.3.5" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", + "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.1", + "readable-stream": "2.3.5", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", + "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=", + "dev": true + }, + "stream-to-buffer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", + "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", + "dev": true, + "requires": { + "stream-to": "0.2.2" + } + }, + "stream-to-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", + "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "dev": true, + "requires": { + "any-observable": "0.2.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "svg2png": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg2png/-/svg2png-3.0.1.tgz", + "integrity": "sha1-omRNaLAjGsAK9DGqFjcU/xcQZEc=", + "dev": true, + "requires": { + "phantomjs-prebuilt": "2.1.16", + "pn": "1.1.0", + "yargs": "3.32.0" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "taffydb": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", + "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=" + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "textextensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", + "dev": true + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-ico": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/to-ico/-/to-ico-1.1.5.tgz", + "integrity": "sha512-5kIh7m7bkIlqIESEZkL8gAMMzucXKfPe3hX2FoDY5HEAfD9OJU+Qh9b6Enp74w0qRcxVT5ejss66PHKqc3AVkg==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "buffer-alloc": "1.1.0", + "image-size": "0.5.5", + "parse-png": "1.1.2", + "resize-img": "1.1.2" + }, + "dependencies": { + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true + } + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", + "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=", + "dev": true + }, + "ts-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-4.1.0.tgz", + "integrity": "sha512-R4VEE0SZhU8gLa9Aayg2XOvpVjXtbB7KMLXs4He0xr92DM5G12i76IWd+lMLfmCz66Ztr2XFvDNvMAymHJGIqg==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "enhanced-resolve": "4.0.0", + "loader-utils": "1.1.0", + "micromatch": "3.1.10", + "semver": "5.5.0" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", + "dev": true + }, + "tslint": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.2", + "commander": "2.15.1", + "diff": "3.5.0", + "glob": "7.1.2", + "js-yaml": "3.7.0", + "minimatch": "3.0.4", + "resolve": "1.6.0", + "semver": "5.5.0", + "tslib": "1.9.0", + "tsutils": "2.25.0" + } + }, + "tsutils": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.25.0.tgz", + "integrity": "sha512-SPgUlOAUAe6fCyPi0QR4U0jRuDsHHKvzIR6/hHd0YR0bb8MzeLJgCagkPSmZeJjWImnpJ0xq6XHa9goTvMBBCQ==", + "dev": true, + "requires": { + "tslib": "1.9.0" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, + "uglify-js": { + "version": "3.3.16", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.16.tgz", + "integrity": "sha512-FMh5SRqJRGhv9BbaTffENIpDDQIoPDR8DBraunGORGhySArsXlw9++CN+BWzPBLpoI4RcSnpfGPnilTxWL3Vvg==", + "dev": true, + "requires": { + "commander": "2.15.1", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz", + "integrity": "sha512-z0IbjpW8b3O/OVn+TTZN4pI29RN1zktFBXLIzzfZ+++cUtZ1ERSlLWgpE/5OERuEUs1ijVQnpYAkSlpoVmQmSQ==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", + "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", + "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "1.0.3", + "unicode-property-aliases-ecmascript": "1.0.3" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", + "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", + "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "untildify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz", + "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=", + "dev": true + }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "requires": { + "punycode": "2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "dev": true, + "requires": { + "ip-regex": "1.0.3" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "v8-compile-cache": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", + "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "vue-parser": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/vue-parser/-/vue-parser-1.1.6.tgz", + "integrity": "sha512-v3/R7PLbaFVF/c8IIzWs1HgRpT2gN0dLRkaLIT5q+zJGVgmhN4VuZJF4Y9N4hFtFjS4B1EHxAOP6/tzqM4Ug2g==", + "dev": true, + "requires": { + "parse5": "3.0.3" + } + }, + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "dev": true, + "requires": { + "chokidar": "2.0.3", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.1", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webapp-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/webapp-webpack-plugin/-/webapp-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-B4fkclaW04frb0AYj2JfUkJIsrJ7TW4QKgFenOdQUINJ8+vovsrbU/FxCvWH2J7h650JIWJTyh8cFDmGskPScQ==", + "dev": true, + "requires": { + "cache-loader": "1.2.2", + "camelcase": "4.1.0", + "favicons": "4.8.6", + "find-root": "1.1.0", + "loader-utils": "1.1.0", + "msgpack-lite": "0.1.26", + "parse-author": "2.0.0" + } + }, + "webpack": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.3.0.tgz", + "integrity": "sha512-oFbYLpxz8IV44Z5o2uVhvzsdw9J8x/l7Ry9EGvckkx6PFBZo5wRvd2J4nPP9oGhkl2WtNXoU4N7LM5Pjk1MAiA==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.4.0", + "ajv-keywords": "3.1.0", + "chrome-trace-event": "0.1.2", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "neo-async": "2.5.0", + "node-libs-browser": "2.1.0", + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.4", + "watchpack": "1.5.0", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "webpack-addons": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", + "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", + "dev": true, + "requires": { + "jscodeshift": "0.4.1" + }, + "dependencies": { + "ast-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "jscodeshift": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", + "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", + "dev": true, + "requires": { + "async": "1.5.2", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "6.18.0", + "colors": "1.1.2", + "flow-parser": "0.69.0", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.12.9", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" + } + }, + "recast": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", + "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", + "dev": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "2.5.4", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.11.1.tgz", + "integrity": "sha512-VKUVkVMc6TWVXmF1OxsBXoiRjYiDRA4XT0KqtbLMDK+891VX7FCuklYwzldND8J2upUcHHnuXYNTP+4mSFi4Kg==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "bfj-node4": "5.3.1", + "chalk": "2.3.2", + "commander": "2.15.1", + "ejs": "2.5.8", + "express": "4.16.3", + "filesize": "3.6.1", + "gzip-size": "4.1.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "opener": "1.4.3", + "ws": "4.1.0" + } + }, + "webpack-cli": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.13.tgz", + "integrity": "sha512-0lnOi3yla8FsZVuMsbfnNRB/8DlfuDugKdekC+4ykydZG0+UOidMi5J5LLWN4c0VJ8PqC19yMXXkYyCq78OuqA==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "cross-spawn": "6.0.5", + "diff": "3.5.0", + "enhanced-resolve": "4.0.0", + "glob-all": "3.1.0", + "global-modules": "1.0.0", + "got": "8.3.0", + "inquirer": "5.2.0", + "interpret": "1.1.0", + "jscodeshift": "0.5.0", + "listr": "0.13.0", + "loader-utils": "1.1.0", + "lodash": "4.17.5", + "log-symbols": "2.2.0", + "mkdirp": "0.5.1", + "p-each-series": "1.0.0", + "p-lazy": "1.0.0", + "prettier": "1.11.1", + "resolve-cwd": "2.0.0", + "supports-color": "5.3.0", + "v8-compile-cache": "1.1.2", + "webpack-addons": "1.1.5", + "yargs": "11.0.0", + "yeoman-environment": "2.0.5", + "yeoman-generator": "2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + } + } + }, + "webpack-closure-compiler": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/webpack-closure-compiler/-/webpack-closure-compiler-2.1.6.tgz", + "integrity": "sha512-oF+IeWTlutfJJ+KduZpCJzNsU3BsGn/vbhXnsjhU9/GBcbc0ORm1SbeHPCO01Dja5dQZpkbxUnnsmAg0+8cI6w==", + "dev": true, + "requires": { + "async": "1.5.2", + "google-closure-compiler": "20170626.0.0", + "google-closure-compiler-js": "20170124.0.0", + "temp": "0.8.3", + "webpack-core": "0.6.9" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.4.4" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.0.1.tgz", + "integrity": "sha512-JCturcEZNGA0KHEpOJVRTC/VVazTcPfpR9c1Au6NO9a+jxCRchMi87Qe7y3JeOzc0v5eMMKpuGBnPdN52NA+CQ==", + "dev": true, + "requires": { + "loud-rejection": "1.6.0", + "memory-fs": "0.4.1", + "mime": "2.2.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "url-join": "4.0.0", + "webpack-log": "1.1.2" + }, + "dependencies": { + "mime": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", + "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.1.tgz", + "integrity": "sha512-u5lz6REb3+KklgSIytUIOrmWgnpgFmfj/+I+GBXurhEoCsHXpG9twk4NO3bsu72GC9YtxIsiavjfRdhmNt0A/A==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.3", + "compression": "1.7.2", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.3.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.2", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.3.0", + "webpack-dev-middleware": "3.0.1", + "webpack-log": "1.1.2", + "yargs": "9.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.1", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "webpack-log": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.1.2.tgz", + "integrity": "sha512-B53SD4N4BHpZdUwZcj4st2QT7gVfqZtqHDruC1N+K2sciq0Rt/3F1Dx6RlylVkcrToMLTaiaeT48k9Lq4iDVDA==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "log-symbols": "2.2.0", + "loglevelnext": "1.0.3", + "uuid": "3.2.1" + } + }, + "webpack-merge": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-visualizer-plugin": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/webpack-visualizer-plugin/-/webpack-visualizer-plugin-0.1.11.tgz", + "integrity": "sha1-uHcK2GtPZSYSxosbeCJT+vn4o04=", + "dev": true, + "requires": { + "d3": "3.5.17", + "mkdirp": "0.5.1", + "react": "0.14.9", + "react-dom": "0.14.9" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.11", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-fetch": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", + "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1" + } + }, + "xhr": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.1.tgz", + "integrity": "sha512-pAIU5vBr9Hiy5cpFIbPnwf0C18ZF86DBsZKrlsf87N5De/JbA6RJ83UP/cv+aljl4S40iRVMqP4pr4sF9Dnj0A==", + "dev": true, + "requires": { + "global": "4.3.2", + "is-function": "1.0.1", + "parse-headers": "2.0.1", + "xtend": "4.0.1" + } + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + }, + "yeoman-environment": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.5.tgz", + "integrity": "sha512-6/W7/B54OPHJXob0n0+pmkwFsirC8cokuQkPSmT/D0lCcSxkKtg/BA6ZnjUBIwjuGqmw3DTrT4en++htaUju5g==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "globby": "6.1.0", + "grouped-queue": "0.3.3", + "inquirer": "3.3.0", + "is-scoped": "1.0.0", + "lodash": "4.17.5", + "log-symbols": "2.2.0", + "mem-fs": "1.1.3", + "text-table": "0.2.0", + "untildify": "3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "yeoman-generator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.3.tgz", + "integrity": "sha512-mODmrZ26a94djmGZZuIiomSGlN4wULdou29ZwcySupb2e9FdvoCl7Ps2FqHFjEHio3kOl/iBeaNqrnx3C3NwWg==", + "dev": true, + "requires": { + "async": "2.6.0", + "chalk": "2.3.2", + "cli-table": "0.3.1", + "cross-spawn": "5.1.0", + "dargs": "5.1.0", + "dateformat": "3.0.3", + "debug": "3.1.0", + "detect-conflict": "1.0.1", + "error": "7.0.2", + "find-up": "2.1.0", + "github-username": "4.1.0", + "istextorbinary": "2.2.1", + "lodash": "4.17.5", + "make-dir": "1.2.0", + "mem-fs-editor": "3.0.2", + "minimist": "1.2.0", + "pretty-bytes": "4.0.2", + "read-chunk": "2.1.0", + "read-pkg-up": "3.0.0", + "rimraf": "2.6.2", + "run-async": "2.3.0", + "shelljs": "0.8.1", + "text-table": "0.2.0", + "through2": "2.0.3", + "yeoman-environment": "2.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "read-chunk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", + "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", + "dev": true, + "requires": { + "pify": "3.0.0", + "safe-buffer": "5.1.1" + } + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..2216ad63 --- /dev/null +++ b/package.json @@ -0,0 +1,53 @@ +{ + "name": "factorio-blueprint-editor", + "version": "0.1.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --config webpack.dev.js --host 0.0.0.0 --open --useLocalIp", + "build": "webpack --config webpack.prod.js" + }, + "author": "Teoxoy", + "license": "MIT", + "browserslist": [ + "> 5%", + "last 3 versions" + ], + "dependencies": { + "@pixi/filter-adjustment": "^2.5.0", + "ajv": "^6.4.0", + "gown": "^0.1.6", + "immutable": "^3.8.2", + "keyboardjs": "^2.4.1", + "normalize.css": "^8.0.0", + "pixi.js": "^4.7.1" + }, + "devDependencies": { + "@babel/core": "^7.0.0-beta.42", + "@babel/preset-env": "^7.0.0-beta.42", + "@types/keyboardjs": "^2.2.31", + "@types/pixi.js": "^4.7.2", + "babel-loader": "^8.0.0-beta.2", + "clean-webpack-plugin": "^0.1.19", + "copy-webpack-plugin": "^4.5.1", + "css-loader": "^0.28.11", + "extract-text-webpack-plugin": "^4.0.0-beta.0", + "fork-ts-checker-webpack-plugin": "^0.4.1", + "fs-extra": "^5.0.0", + "html-webpack-plugin": "3.1.0", + "jimp": "^0.2.28", + "node-sprite-generator": "^0.10.2", + "optimize-css-assets-webpack-plugin": "^4.0.0", + "ts-loader": "^4.1.0", + "tslint": "^5.9.1", + "typescript": "^2.8.1", + "webapp-webpack-plugin": "^1.3.1", + "webpack": "^4.3.0", + "webpack-bundle-analyzer": "^2.11.1", + "webpack-cli": "^2.0.13", + "webpack-closure-compiler": "^2.1.6", + "webpack-dev-server": "^3.1.1", + "webpack-merge": "^4.1.2", + "webpack-visualizer-plugin": "^0.1.11" + } +} diff --git a/parser/defines.lua b/parser/defines.lua new file mode 100644 index 00000000..ebad2b0f --- /dev/null +++ b/parser/defines.lua @@ -0,0 +1,598 @@ +defines = { + alert_type = { + custom = 6, + entity_destroyed = 0, + entity_under_attack = 1, + no_material_for_construction = 3, + no_storage = 7, + not_enough_construction_robots = 2, + not_enough_repair_packs = 4, + turret_fire = 5 + }, + chain_signal_state = { + all_open = 1, + none = 0, + none_open = 3, + partially_open = 2 + }, + chunk_generated_status = { + basic_tiles = 20, + corrected_tiles = 30, + custom_tiles = 10, + entities = 50, + nothing = 0, + tiles = 40 + }, + circuit_condition_index = { + arithmetic_combinator = 1, + constant_combinator = 1, + decider_combinator = 1, + inserter_circuit = 1, + inserter_logistic = 2, + lamp = 1, + offshore_pump = 1, + pump = 1 + }, + circuit_connector_id = { + accumulator = 1, + combinator_input = 1, + combinator_output = 2, + constant_combinator = 1, + container = 1, + electric_pole = 1, + inserter = 1, + lamp = 1, + offshore_pump = 1, + programmable_speaker = 1, + pump = 1, + rail_chain_signal = 1, + rail_signal = 1, + roboport = 1, + storage_tank = 1, + wall = 1 + }, + command = { + attack = 1, + attack_area = 5, + build_base = 7, + compound = 3, + flee = 8, + go_to_location = 2, + group = 4, + wander = 6 + }, + compound_command = { + logical_and = 0, + logical_or = 1, + return_last = 2 + }, + control_behavior = { + inserter = { + circuit_mode_of_operation = { + enable_disable = 0, + none = 3, + read_hand_contents = 2, + set_filters = 1, + set_stack_size = 4 + }, + hand_read_mode = { + hold = 1, + pulse = 0 + } + }, + lamp = { + circuit_mode_of_operation = { + use_colors = 0 + } + }, + logistic_container = { + circuit_mode_of_operation = { + send_contents = 0, + set_requests = 1 + } + }, + mining_drill = { + resource_read_mode = { + entire_patch = 1, + this_miner = 0 + } + }, + roboport = { + circuit_mode_of_operation = { + read_logistics = 0, + read_robot_stats = 1 + } + }, + train_stop = { + circuit_mode_of_operation = { + enable_disable = 0, + read_from_train = 2, + read_stopped_train = 3, + send_to_train = 1 + } + }, + transport_belt = { + content_read_mode = { + hold = 1, + pulse = 0 + } + }, + type = { + accumulator = 13, + arithmetic_combinator = 10, + constant_combinator = 11, + container = 1, + decider_combinator = 9, + generic_on_off = 2, + inserter = 3, + lamp = 4, + logistic_container = 5, + mining_drill = 16, + programmable_speaker = 17, + rail_chain_signal = 18, + rail_signal = 14, + roboport = 6, + storage_tank = 7, + train_stop = 8, + transport_belt = 12, + wall = 15 + } + }, + controllers = { + character = 1, + ghost = 0, + god = 2 + }, + deconstruction_item = { + entity_filter_mode = { + blacklist = 1, + whitelist = 0 + }, + tile_filter_mode = { + blacklist = 1, + whitelist = 0 + }, + tile_selection_mode = { + always = 1, + never = 2, + normal = 0, + only = 3 + } + }, + difficulty = { + easy = 0, + hard = 2, + normal = 1 + }, + difficulty_settings = { + recipe_difficulty = { + expensive = 1, + normal = 0 + }, + technology_difficulty = { + expensive = 1, + normal = 0 + } + }, + direction = { + east = 2, + north = 0, + northeast = 1, + northwest = 7, + south = 4, + southeast = 3, + southwest = 5, + west = 6 + }, + distraction = { + by_anything = 3, + by_damage = 4, + by_enemy = 1, + none = 0 + }, + events = { + on_biter_base_built = 55, + on_built_entity = 6, + on_canceled_deconstruction = 21, + on_character_corpse_expired = 90, + on_chunk_charted = 98, + on_chunk_generated = 12, + on_combat_robot_expired = 80, + on_console_chat = 71, + on_console_command = 72, + on_difficulty_settings_changed = 60, + on_entity_damaged = 97, + on_entity_died = 4, + on_entity_renamed = 57, + on_entity_settings_pasted = 31, + on_force_created = 27, + on_forces_merging = 28, + on_gui_checked_state_changed = 3, + on_gui_click = 1, + on_gui_closed = 84, + on_gui_elem_changed = 67, + on_gui_opened = 83, + on_gui_selection_state_changed = 58, + on_gui_text_changed = 2, + on_gui_value_changed = 85, + on_marked_for_deconstruction = 20, + on_market_item_purchased = 53, + on_mod_item_opened = 82, + on_picked_up_item = 5, + on_player_alt_selected_area = 50, + on_player_ammo_inventory_changed = 36, + on_player_armor_inventory_changed = 35, + on_player_built_tile = 45, + on_player_cancelled_crafting = 96, + on_player_changed_force = 56, + on_player_changed_position = 81, + on_player_changed_surface = 51, + on_player_cheat_mode_disabled = 89, + on_player_cheat_mode_enabled = 88, + on_player_configured_blueprint = 70, + on_player_crafted_item = 13, + on_player_created = 24, + on_player_cursor_stack_changed = 29, + on_player_deconstructed_area = 69, + on_player_demoted = 76, + on_player_died = 41, + on_player_display_resolution_changed = 93, + on_player_display_scale_changed = 94, + on_player_driving_changed_state = 26, + on_player_dropped_item = 54, + on_player_gun_inventory_changed = 37, + on_player_joined_game = 43, + on_player_left_game = 44, + on_player_main_inventory_changed = 32, + on_player_mined_entity = 65, + on_player_mined_item = 8, + on_player_mined_tile = 46, + on_player_muted = 86, + on_player_pipette = 92, + on_player_placed_equipment = 38, + on_player_promoted = 75, + on_player_quickbar_inventory_changed = 33, + on_player_removed = 73, + on_player_removed_equipment = 39, + on_player_respawned = 42, + on_player_rotated_entity = 19, + on_player_selected_area = 49, + on_player_setup_blueprint = 68, + on_player_tool_inventory_changed = 34, + on_player_unmuted = 87, + on_player_used_capsule = 74, + on_pre_entity_settings_pasted = 30, + on_pre_ghost_deconstructed = 91, + on_pre_player_crafted_item = 95, + on_pre_player_died = 40, + on_pre_player_mined_item = 11, + on_pre_surface_deleted = 63, + on_put_item = 9, + on_research_finished = 18, + on_research_started = 17, + on_resource_depleted = 25, + on_robot_built_entity = 14, + on_robot_built_tile = 47, + on_robot_mined = 16, + on_robot_mined_entity = 64, + on_robot_mined_tile = 48, + on_robot_pre_mined = 15, + on_rocket_launched = 10, + on_runtime_mod_setting_changed = 59, + on_sector_scanned = 7, + on_selected_entity_changed = 52, + on_surface_created = 61, + on_surface_deleted = 62, + on_tick = 0, + on_train_changed_state = 23, + on_train_created = 66, + on_trigger_created_entity = 22, + script_raised_built = 77, + script_raised_destroy = 78, + script_raised_revive = 79 + }, + group_state = { + attacking_distraction = 2, + attacking_target = 3, + finished = 4, + gathering = 0, + moving = 1 + }, + gui_type = { + achievement = 8, + blueprint_library = 9, + bonus = 6, + controller = 3, + custom = 16, + entity = 1, + equipment = 10, + item = 5, + kills = 13, + logistic = 11, + none = 0, + other_player = 12, + permissions = 14, + production = 4, + research = 2, + trains = 7, + tutorials = 15 + }, + input_action = { + add_permission_group = 177, + alt_select_area = 129, + alt_select_blueprint_entities = 94, + begin_mining = 2, + begin_mining_terrain = 46, + build_item = 44, + build_rail = 125, + build_terrain = 120, + cancel_craft = 64, + cancel_deconstruct = 114, + cancel_new_blueprint = 22, + cancel_research = 126, + change_active_item_group_for_crafting = 78, + change_active_item_group_for_filters = 89, + change_active_quick_bar = 17, + change_arithmetic_combinator_parameters = 115, + change_blueprint_book_record_label = 109, + change_decider_combinator_parameters = 116, + change_item_label = 124, + change_picking_state = 150, + change_programmable_speaker_alert_parameters = 118, + change_programmable_speaker_circuit_parameters = 119, + change_programmable_speaker_parameters = 117, + change_riding_state = 47, + change_shooting_state = 58, + change_single_blueprint_record_label = 100, + change_train_stop_station = 77, + change_train_wait_condition = 121, + change_train_wait_condition_data = 122, + clean_cursor_stack = 13, + clear_selected_blueprint = 131, + clear_selected_deconstruction_item = 132, + connect_rolling_stock = 10, + copy_entity_settings = 24, + craft = 56, + create_blueprint_like = 104, + cursor_split = 52, + cursor_transfer = 51, + custom_input = 123, + cycle_blueprint_book_backwards = 36, + cycle_blueprint_book_forwards = 35, + deconstruct = 92, + delete_blueprint_record = 103, + delete_custom_tag = 175, + delete_permission_group = 176, + destroy_opened_item = 26, + disconnect_rolling_stock = 11, + drag_train_schedule = 142, + drag_train_wait_condition = 143, + drop_blueprint_record = 102, + drop_item = 43, + drop_to_blueprint_book = 174, + edit_custom_tag = 137, + edit_permission_group = 138, + edit_train_schedule = 76, + export_blueprint = 111, + fast_entity_split = 164, + fast_entity_transfer = 163, + grab_blueprint_record = 101, + gui_checked_state_changed = 80, + gui_click = 73, + gui_elem_changed = 140, + gui_selection_state_changed = 81, + gui_text_changed = 79, + gui_value_changed = 82, + import_blueprint = 112, + import_blueprint_string = 139, + inventory_split = 63, + inventory_transfer = 54, + launch_rocket = 16, + market_offer = 75, + mod_settings_changed = 135, + open_achievements_gui = 33, + open_blueprint_library_gui = 18, + open_blueprint_record = 98, + open_bonus_gui = 31, + open_character_gui = 9, + open_equipment = 50, + open_gui = 7, + open_item = 48, + open_kills_gui = 20, + open_logistic_gui = 41, + open_mod_item = 49, + open_production_gui = 19, + open_technology_gui = 15, + open_train_gui = 170, + open_train_station_gui = 127, + open_trains_gui = 32, + open_tutorials_gui = 34, + paste_entity_settings = 25, + place_equipment = 83, + remove_cables = 110, + reset_assembling_machine = 14, + reverse_rotate_entity = 5, + rotate_entity = 4, + select_area = 128, + select_blueprint_entities = 93, + select_entity_slot = 145, + select_gun = 156, + select_item = 144, + select_tile_slot = 146, + set_auto_launch_rocket = 158, + set_autosort_inventory = 157, + set_behavior_mode = 162, + set_car_weapons_control = 179, + set_circuit_condition = 67, + set_circuit_mode_of_operation = 72, + set_deconstruction_item_tile_selection_mode = 173, + set_deconstruction_item_trees_and_rocks_only = 172, + set_entity_color = 171, + set_entity_energy_property = 136, + set_filter = 65, + set_infinity_container_filter_item = 134, + set_infinity_container_remove_unfiltered_items = 178, + set_inserter_max_stack_size = 169, + set_inventory_bar = 88, + set_logistic_filter_item = 70, + set_logistic_filter_signal = 71, + set_logistic_trash_filter_item = 133, + set_request_from_buffers = 180, + set_research_finished_stops_game = 168, + set_signal = 68, + set_single_blueprint_record_icon = 97, + set_splitter_priority = 149, + set_train_stopped = 165, + setup_assembling_machine = 59, + setup_blueprint = 95, + setup_single_blueprint_record = 96, + shortcut_quick_bar_transfer = 155, + smart_pipette = 61, + stack_split = 62, + stack_transfer = 53, + start_repair = 91, + start_research = 69, + start_walking = 45, + switch_connect_to_logistic_network = 161, + switch_constant_combinator_state = 159, + switch_power_switch_state = 160, + switch_to_rename_stop_gui = 30, + take_equipment = 84, + toggle_deconstruction_item_entity_filter_mode = 39, + toggle_deconstruction_item_tile_filter_mode = 40, + toggle_driving = 6, + toggle_enable_vehicle_logistics_while_moving = 38, + toggle_show_entity_info = 27, + use_ability = 85, + use_artillery_remote = 87, + use_item = 86, + wire_dragging = 57, + write_to_console = 74 + }, + inventory = { + assembling_machine_input = 2, + assembling_machine_modules = 4, + assembling_machine_output = 3, + beacon_modules = 1, + burnt_result = 6, + car_ammo = 3, + car_trunk = 2, + cargo_wagon = 1, + chest = 1, + fuel = 1, + furnace_modules = 4, + furnace_result = 3, + furnace_source = 2, + god_main = 2, + god_quickbar = 1, + item_main = 1, + lab_input = 2, + lab_modules = 3, + mining_drill_modules = 2, + player_ammo = 4, + player_armor = 5, + player_guns = 3, + player_main = 1, + player_quickbar = 2, + player_tools = 6, + player_trash = 8, + player_vehicle = 7, + roboport_material = 2, + roboport_robot = 1, + robot_cargo = 1, + robot_repair = 2, + rocket_silo_result = 6, + rocket_silo_rocket = 5, + turret_ammo = 1 + }, + logistic_member_index = { + character_provider = 2, + character_requester = 0, + character_storage = 1, + generic_on_off_behavior = 0, + logistic_container = 0, + vehicle_storage = 1 + }, + logistic_mode = { + active_provider = 1, + buffer = 5, + none = 0, + passive_provider = 4, + requester = 3, + storage = 2 + }, + mouse_button_type = { + left = 2, + middle = 8, + none = 1, + right = 4 + }, + rail_connection_direction = { + left = 0, + none = 3, + right = 2, + straight = 1 + }, + rail_direction = { + back = 1, + front = 0 + }, + riding = { + acceleration = { + accelerating = 1, + braking = 2, + nothing = 0, + reversing = 3 + }, + direction = { + left = 0, + right = 2, + straight = 1 + } + }, + shooting = { + not_shooting = 0, + shooting_enemies = 1, + shooting_selected = 2 + }, + signal_state = { + closed = 1, + open = 0, + reserved = 2, + reserved_by_circuit_network = 3 + }, + train_state = { + arrive_signal = 4, + arrive_station = 6, + manual_control = 9, + manual_control_stop = 8, + no_path = 3, + no_schedule = 2, + on_the_path = 0, + path_lost = 1, + wait_signal = 5, + wait_station = 7 + }, + transport_line = { + left_line = 1, + left_split_line = 5, + left_underground_line = 3, + right_line = 2, + right_split_line = 6, + right_underground_line = 4, + secondary_left_line = 3, + secondary_left_split_line = 7, + secondary_right_line = 4, + secondary_right_split_line = 8 + }, + wire_connection_id = { + electric_pole = 0, + power_switch_left = 0, + power_switch_right = 1 + }, + wire_type = { + copper = 1, + green = 3, + red = 2 + } +} diff --git a/parser/exportRawData.js b/parser/exportRawData.js new file mode 100644 index 00000000..db2280c9 --- /dev/null +++ b/parser/exportRawData.js @@ -0,0 +1,109 @@ +const fse = require('fs-extra') +const lua_parser = require('./luajs/lua_parser_umd').parser +const execSync = require('child_process').execSync +//const factorioDirectory = 'C:/SteamLibrary/steamapps/common/Factorio/data/' +const factorioDirectory = 'C:/_Programs/Steam/steamapps/common/Factorio/data/' + +//run /c game.write_file("defines.lua", serpent.block(_G.defines, {comments=false})) +//_tree_data_320 -> _tree_data_1 + +// Load Order: +// data.lua +// data-updates.lua +// data-final-fixes.lua + +const reqLualibRegex = /.*?require\s*\(*['"]([^.]+?)['"]\)*/g +const reqRegex = /require\s*\(*['"](.+?)['"]\)*/g + +let loadedModules = [] + +function searchLoadRemoveDependencies(contents, regex, baseFolder) { + let newModules = [] + let match = regex.exec(contents) + while (match !== null) { + let dep = match[1] + if (!loadedModules.includes(dep)) { + //load module + loadedModules.push(dep) + newModules.push({ + index: match.index, + name: dep + }) + } + match = regex.exec(contents) + } + + let offset = 0 + for (let i = 0; i < newModules.length; i++) { + let startPart = contents.slice(0, newModules[i].index + offset) + let endPart = contents.slice(newModules[i].index + offset) + let depData = readRequireOfFile(baseFolder, newModules[i].name.replace(/\./g, '/') + '.lua') + '\n' + contents = startPart + depData + endPart + offset += depData.length + } + + // remove all requires + contents = contents.replace(regex, '') + + return contents +} + +function readRequireOfFile(baseFolder, pathCon) { + let contents = fse.readFileSync(factorioDirectory + baseFolder + pathCon).toString() + + contents = searchLoadRemoveDependencies(contents, reqLualibRegex, 'core/lualib/') + contents = searchLoadRemoveDependencies(contents, reqRegex, baseFolder) + + // remove last return + contents = contents.replace(/return\s*\b.+?\b\s*$/g, '') + + // if a return is an obj, convert the return with the filename + contents = contents.replace(/return\s(\{(.|\n)+?\})\s*$/g, function(match, capture){ + let split = pathCon.split('/') + return split[split.length - 1].replace('.lua', '') + ' = ' + capture + }) + + if (pathCon.includes('autoplace_utils')) { + contents = contents.replace(/M/g, 'autoplace_utils') + } + + return contents +} + +const fileOrder = [ + 'core/lualib/dataloader.lua', + 'core/data.lua', + 'base/data.lua', + 'base/data-updates.lua' +] + +let mainFileData = '' + +for (let i = 0; i < fileOrder.length; i++) { + let splitPath = fileOrder[i].split('/') + let data = readRequireOfFile(splitPath[0] + '/', splitPath.slice(1).join('/')) + mainFileData += data + '\n' +} + +mainFileData = mainFileData + // var = require(...) results in var = var = {} + .replace(/\b[a-zA-Z_-]+?\b\s*(=\s*\b[a-zA-Z_-]+?\b\s*)=\s*\{/g, function(match, capture){ + return match.replace(capture, '') + }) + +mainFileData = fse.readFileSync('./defines.lua').toString() + mainFileData + +fse.writeFileSync('./temp.lua', mainFileData) + +let parsedData = lua_parser.parse(mainFileData).replace(/_tree_data_320/g, '_tree_data_1') + +let script = "var fs = require('fs');\n" + + fse.readFileSync('./luajs/lua.js').toString() + "\n" + + "var lua_script = (function() {\n" + + " " + parsedData.split("\n").join("\n ") + "\n" + + "})()[0];\n" + + "fs.writeFileSync('./temp.json', JSON.stringify(lua_tabletoJson(lua_tableget(lua_tableget(lua_script, 'data'), 'raw')), null, 2))" + +fse.writeFileSync('./temp.js', script) + +execSync('node temp.js') diff --git a/parser/json-entity.tpl b/parser/json-entity.tpl new file mode 100644 index 00000000..664b96ff --- /dev/null +++ b/parser/json-entity.tpl @@ -0,0 +1,11 @@ +{ + "frames": { + <% layout.images.forEach(function (image, idx) + { %>"<%= image.className %>": { + "frame": { "x": <%= image.x %>, "y": <%= image.y %>, "w": <%= image.width %>, "h": <%= image.height %> }, + "sourceSize": { "w": <%= image.width %>, "h": <%= image.height %> } + }<% if (idx !== layout.images.length - 1) { %>,<% } %> + <% }); %> + }, + "meta": { "image": "entitySprites.png" } +} diff --git a/parser/json-icon.tpl b/parser/json-icon.tpl new file mode 100644 index 00000000..c8617b86 --- /dev/null +++ b/parser/json-icon.tpl @@ -0,0 +1,11 @@ +{ + "frames": { + <% layout.images.forEach(function (image, idx) + { %>"<%= image.className %>": { + "frame": { "x": <%= image.x %>, "y": <%= image.y %>, "w": <%= image.width %>, "h": <%= image.height %> }, + "sourceSize": { "w": <%= image.width %>, "h": <%= image.height %> } + }<% if (idx !== layout.images.length - 1) { %>,<% } %> + <% }); %> + }, + "meta": { "image": "iconSprites.png" } +} diff --git a/parser/luajs/lua.js b/parser/luajs/lua.js new file mode 100644 index 00000000..e9d6ea0f --- /dev/null +++ b/parser/luajs/lua.js @@ -0,0 +1,1800 @@ +/** + @license Copyright 2011 Maximilian Herkender + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +var lua_print = function () { + try { + console.log.apply(console, arguments); + } catch (e) { + // do nothing + } + return []; +}; + +function lua_load(chunk, chunkname) { + if (!lua_parser) { + throw new Error("Lua parser not available, perhaps you're not using the lua+parser.js version of the library?"); + } + + var fn; + eval( + "fn = function " + (chunkname || "load") + "() {\n" + + "return (function () {\n" + + lua_parser.parse(chunk) + "\n" + + "})()[0];\n" + + "};"); + return fn; +} + +/* + Copyright 2011 Maximilian Herkender + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// slice that works in as3 and js on arguments +function slice(arr, start) { + if (arr.slice) { + return arr.slice(start); + } else { + return Array.prototype.slice.call(arr, start); + } +} + +// not supported call +function not_supported() { + throw new Error("Not supported"); +} + +function check_string(s) { + var type = typeof s; + if (type == "string") { + return s; + } else if (type == "number") { + return s.toString(); + } else { + throw new Error("Input not string"); + } +} + +/** @constructor */ +function ReturnValues(vars) { + this.vars = vars || []; +} + +// methods used by generated lua code +function lua_true(op) { + return op != null && op !== false; +} +function lua_not(op) { + return op == null || op === false; +} +function lua_and(op1, op2) { + return op1 == null || op1 === false ? op1 : op2(); +} +function lua_or(op1, op2) { + return op1 != null && op1 !== false ? op1 : op2(); +} +function lua_assertfloat(n) { + var result = parseFloat(n); + if (isNaN(result)) { + throw new Error("Invalid number: " + n); + } + return result; +} +function lua_newtable(autoIndexList) { + var result = {str: {}, uints: [], floats: {}, bool: {}, objs: []}; + for (var i = 1; i < arguments.length - 1; i += 2) { + var value = arguments[i + 1]; + if (value == null) { + continue; + } + var key = arguments[i]; + switch (typeof key) { + case "string": + result.str[key] = value; + break; + case "number": + if (key != key) { + throw new Error("Table index is NaN"); + } + if (key > 0 && (key | 0) == key) { + result.uints[key - 1] = value; + } else { + result.floats[key] = value; + } + break; + case "boolean": + result.bool[key] = value; + break; + case "object": + if (key == null) { + throw new Error("Table index is nil"); + } + var bFound = value == null; + for (var i in result.objs) { + if (result.objs[i][0] === key) { + if (value == null) { + result.objs.splice(i, 1); // remove element [i] + } else { + bFound = true; + // modify/overwrite existing entry + // (could happen that same key is used twice in autoIndexList) + result.objs[i][1] = value; + } + break; + } + } + if (!bFound) { + result.objs.push([key, value]); // add new entry + } + break; + default: + throw new Error("Unsupported type for table: " + (typeof key)); + } + } + if (autoIndexList) { + if (result.uints.length == 0) { + result.uints = autoIndexList; + } else { + i = autoIndexList.length; + while (i-- > 0) { + result.uints[i] = autoIndexList[i]; + } + } + } + return result; +} +function lua_newtable2(str) { + var str_copy = {}; + for (var i in str) { + str_copy[i] = str[i]; + } + return {str: str_copy, uints: [], floats: {}, bool: {}, objs: {}}; +} +function lua_len(op) { + if (typeof op == "string") { + return op.length; + } else if (typeof op == "object" && op != null) { + if (op.length == null) { + var index = 0; + while (op.uints[index++] != null) {}; + return op.length = index - 1; + } else { + return op.length; + } + } else { + var h = op.metatable && op.metatable.str["__len"]; + if (h) { + return lua_rawcall(h, [op])[0]; + } else { + throw new Error("Length of <" + op + "> not supported"); + } + } +} +function lua_rawcall(func, args) { + try { + return func.apply(null, args); + } catch (e) { + if (e.constructor == ReturnValues) { + return e.vars; + } + // This breaks the stack on Chrome + // + throw e; + } +} + +// could be replaced by lua_call(lua_tableget(table, key), args) +// but this gives better error messages +function lua_tablegetcall(table, key, args) { + var func = lua_tableget(table, key); + if (typeof func == "function") { + return lua_rawcall(func, args); + } else { + if (func == null) { + throw new Error("attempt to call field '" + key + "' (a nil value)"); + } + var h = func.metatable && func.metatable.str["__call"]; + if (h != null) { + return lua_rawcall(h, [func].concat(args)); + } else { + throw new Error("Could not call " + func + " as function"); + } + } +} +function lua_call(func, args) { + if (typeof func == "function") { + return lua_rawcall(func, args); + } else { + if (func == null) { + throw new Error("attempt to call function (a nil value)"); + } + var h = func.metatable && func.metatable.str["__call"]; + if (h != null) { + return lua_rawcall(h, [func].concat(args)); + } else { + throw new Error("Could not call " + func + " as function"); + } + } +} +function lua_mcall(obj, methodname, args) { + var func = lua_tableget(obj, methodname); + if (func == null) { + throw new Error("attempt to call method '" + methodname + "' (a nil value)"); + } + return lua_call(func, [obj].concat(args)); +} +function lua_eq(op1, op2) { + if (typeof op1 != typeof op2) { + if (op1 == null && op2 == null) { + return true; + } + return false; + } + if (op1 == op2) { + return true; + } + if (op1 == null || op2 == null) { + return false; + } + var h = op1.metatable && op1.metatable.str["__eq"]; + if (h && h == (op2.metatable && op2.metatable.str["__eq"])) { + return lua_true(lua_rawcall(h, [op1, op2])[0]); + } else { + return false; + } +} +function lua_lt(op1, op2) { + if (typeof op1 == "number" && typeof op2 == "number") { + return op1 < op2; + } else if (typeof op1 == "string" && typeof op2 == "string") { + // TODO: not sure how similar lua/javascript string comparison is + return op1 < op2; + } else { + var h = op1.metatable && op1.metatable.str["__lt"]; + if (h && h == (op2.metatable && op2.metatable.str["__lt"])) { + return lua_true(lua_rawcall(h, [op1, op2])[0]); + } else { + throw new Error("Unable to compare " + op1 + " and " + op2); + } + } +} +function lua_lte(op1, op2) { + if (typeof op1 == "number" && typeof op2 == "number") { + return op1 <= op2; + } else if (typeof op1 == "string" && typeof op2 == "string") { + // TODO: not sure how similar lua/javascript string comparison is + return op1 <= op2; + } else { + var h = op1.metatable && op1.metatable.str["__le"]; + if (h && h == (op2.metatable && op2.metatable.str["__le"])) { + return lua_true(lua_rawcall(h, [op1, op2])[0]); + } else { + var h = op1.metatable && op1.metatable.str["__lt"]; + if (h && h == (op2.metatable && op2.metatable.str["__lt"])) { + return lua_not(lua_rawcall(h, [op2, op1])[0]); + } else { + throw new Error("Unable to compare " + op1 + " and " + op2); + } + } + } +} +function lua_unm(op) { + var o = parseFloat(op); + if (!isNaN(o)) { + return -o; + } else { + var h = op.metatable && op.metatable.str["__unm"]; + if (h) { + return lua_rawcall(h, [op])[0]; + } else { + throw new Error("Inverting <" + op + "> not supported"); + } + } +} +function lua_add(op1, op2) { + var o1 = parseFloat(op1), o2 = parseFloat(op2); + if (isNaN(o1) || isNaN(o2)) { + var h = (op1.metatable && op1.metatable.str["__add"]) || (op2.metatable && op2.metatable.str["__add"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("Adding <" + op1 + "> and <" + op2 + "> not supported"); + } + } else { + return o1 + o2; + } +} +function lua_subtract(op1, op2) { + var o1 = parseFloat(op1), o2 = parseFloat(op2); + if (isNaN(o1) || isNaN(o2)) { + var h = (op1.metatable && op1.metatable.str["__sub"]) || (op2.metatable && op2.metatable.str["__sub"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("Subtracting <" + op1 + "> and <" + op2 + "> not supported"); + } + } else { + return o1 - o2; + } +} +function lua_divide(op1, op2) { + var o1 = parseFloat(op1), o2 = parseFloat(op2); + if (isNaN(o1) || isNaN(o2)) { + var h = (op1.metatable && op1.metatable.str["__div"]) || (op2.metatable && op2.metatable.str["__div"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("Dividing <" + op1 + "> and <" + op2 + "> not supported"); + } + } else { + return o1 / o2; + } +} +function lua_multiply(op1, op2) { + var o1 = parseFloat(op1), o2 = parseFloat(op2); + if (isNaN(o1) || isNaN(o2)) { + var h = (op1.metatable && op1.metatable.str["__mul"]) || (op2.metatable && op2.metatable.str["__mul"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("Multiplying <" + op1 + "> and <" + op2 + "> not supported"); + } + } else { + return o1 * o2; + } +} +function lua_power(op1, op2) { + var o1 = parseFloat(op1), o2 = parseFloat(op2); + if (isNaN(o1) || isNaN(o2)) { + var h = (op1.metatable && op1.metatable.str["__pow"]) || (op2.metatable && op2.metatable.str["__pow"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("<" + op1 + "> to the power of <" + op2 + "> not supported"); + } + } else { + return Math.pow(o1, o2); + } +} +function lua_mod(op1, op2) { + var o1 = parseFloat(op1), o2 = parseFloat(op2); + if (isNaN(o1) || isNaN(o2)) { + var h = (op1.metatable && op1.metatable.str["__mod"]) || (op2.metatable && op2.metatable.str["__mod"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("Modulo <" + op1 + "> and <" + op2 + "> not supported"); + } + } else { + if (o1 >= 0) { + if (o2 >= 0) { + return o1 % o2; + } else { + return (o2 + (o1 % o2)) % o2; + } + } else { + if (o2 >= 0) { + return (o2 + (o1 % o2)) % o2; + } else { + return o1 % o2; + } + } + } +} +function lua_rawget(table, key) { + switch (typeof key) { + case "string": + return table.str[key]; + case "number": + if (key != key) { + throw new Error("Table index is NaN"); + } + if (key > 0 && (key | 0) == key) { + return table.uints[key - 1]; + } else { + return table.floats[key]; + } + case "boolean": + return table.bool[key]; + case "object": + if (key == null) { + return null; + } + for (var i in table.objs) { + if (table.objs[i][0] == key) { + return table.objs[i][1]; + } + } + break; + default: + throw new Error("Unsupported key for table: " + (typeof key)); + } +} +function lua_rawset(table, key, value) { + delete table.length; + switch (typeof key) { + case "string": + if (value == null) { + delete table.str[key]; + } else { + table.str[key] = value; + } + break; + case "number": + if (key != key) { + throw new Error("Table index is NaN"); + } + if (key > 0 && (key | 0) == key) { + if (value == null) { + delete table.uints[key - 1]; + } else { + table.uints[key - 1] = value; + } + } else { + if (value == null) { + delete table.floats[key]; + } else { + table.floats[key] = value; + } + } + break; + case "boolean": + if (value == null) { + delete table.bool[key]; + } else { + table.bool[key] = value; + } + break; + case "object": + if (key == null) { + throw new Error("Table index is nil"); + } + var bFound = value == null; + for (var i in table.objs) { + if (table.objs[i][0] == key) { + if (value == null) { + table.objs.splice(i, 1); // remove element [i] + } else { + bFound = true; + table.objs[i][1] = value; // modifiy/overwrite existing entry + } + break; + } + } + if (!bFound) { + table.objs.push([key, value]); // add new entry + } + break; + default: + throw new Error("Unsupported key for table: " + (typeof key)); + } +} +function lua_tabletoJson(data) { + let dataOut + //is table + if (typeof data === 'object') { + // both + if (Object.keys(data.str).length !== 0 && data.uints.length !== 0) { + dataOut = [] + for (let i = 0; i < data.uints.length; i++) { + dataOut.push(lua_tabletoJson(data.uints[i])) + } + for (let k in data.str) { + if (data.str.hasOwnProperty(k)) { + // ignore keys + dataOut.push(lua_tabletoJson(data.str[k])) + } + } + } else { + // obj + if (Object.keys(data.str).length !== 0) { + dataOut = {} + for (let k in data.str) { + if (data.str.hasOwnProperty(k)) { + dataOut[k] = lua_tabletoJson(data.str[k]) + } + } + } + // array + if (data.uints.length !== 0) { + dataOut = [] + for (let i = 0; i < data.uints.length; i++) { + dataOut.push(lua_tabletoJson(data.uints[i])) + } + } + } + } else { + dataOut = data + } + return dataOut +} +function lua_tableget(table, key) { + if (table == null) { + throw new Error("attempt to index field '" + key + "' in a nil value"); + } + if (typeof table == "object") { + var v = lua_rawget(table, key); + if (v != null) { + return v; + } + var h = table.metatable && table.metatable.str["__index"]; + if (h == null) { + return null; + } + } else { + var h = table.metatable && table.metatable.str["__index"]; + if (h == null) { + throw new Error("Unable to index key " + key + " from " + table); + } + } + if (typeof h == "function") { + return lua_rawcall(h, [table, key])[0]; + } else { + return lua_tableget(h, key); + } +} +function lua_tableset(table, key, value) { + if (table == null) { + throw new Error("attempt to set field '" + key + "' in a nil value"); + } + if (typeof table == "object") { + var v = lua_rawget(table, key); + if (v != null) { + lua_rawset(table, key, value); + return; + } + var h = table.metatable && table.metatable.str["__newindex"]; + if (h == null) { + lua_rawset(table, key, value); + return; + } + } else { + var h = table.metatable && table.metatable.str["__newindex"]; + if (h == null) { + throw new Error("Unable to set key " + key + " in table " + table); + } + } + if (typeof h == "function") { + lua_rawcall(h, [table, key, value]); + } else { + lua_tableset(h, key, value); + } +} +function lua_concat(op1, op2) { + if (typeof op1 == "number" && typeof op2 == "number") { + throw new Error("number concat not supported yet"); + } else if ((typeof op1 == "string" || typeof op1 == "number") && (typeof op2 == "string" || typeof op2 == "number")) { + return op1 + op2; + } else { + var h = (op1.metatable && op1.metatable.str["__concat"]) || (op2.metatable && op2.metatable.str["__concat"]); + if (h) { + return lua_rawcall(h, [op1, op2])[0]; + } else { + throw new Error("Unable to concat " + op1 + " and " + op2); + } + } +} +function lua_tonumber(e, base) { + var type = typeof e; + if (type == "number") { + return e; + } + if (type == "string" && e.indexOf('0x') != -1) { + return parseInt(e, 16); + } + if (type != "string" || e.search("[^0-9\. -]") != -1) { + return null; + } + var num; + if (base === 10 || base == null) { + num = parseFloat(e); + } else { + num = parseInt(e, base); + } + if (isNaN(num)) { + num = null; + } + return num; +} + +// core lua functions +function _ipairs_next(table, index) { + var entry; + entry = table.uints[index]; + if (entry == null) { + return [null, null]; + } + return [index + 1, entry]; +} +var lua_libs = {}; +var lua_core = { + "assert": function (value, message) { + if (arguments.length < 1) { + message = "assertion failed!"; + } + if (value != null && value !== false) { + return [value]; + } else { + throw new Error(message); + } + }, + "collectgarbage": function () {},// no-op + "dofile": function () { + not_supported(); + }, + "error": function (message, level) { + // TODO: "level" is currently ignored + throw new Error(message); + }, + "getfenv": function (func, table) { + not_supported(); + }, + "getmetatable": function (op) { + return [op.metatable && (op.metatable.str["__metatable"] || op.metatable)]; + }, + "ipairs": function (table) { + return [_ipairs_next, table, 0]; + }, + "load": function (func, chunkname) { + var script = "", chunk; + while ((chunk = func()) != null && chunk != "") { + script += chunk; + } + try { + return [lua_load(script, chunkname)]; + } catch (e) { + return [null, e.message]; + } + }, + "loadfile": function () { + not_supported(); + }, + "loadstring": function (string, chunkname) { + try { + return [lua_load(string, chunkname)]; + } catch (e) { + return [null, e.message]; + } + }, + "next": function () { + not_supported(); + }, + "pairs": function (table) { + var props = [], i; + for (i in table.str) { + props.push(i); + } + var j = table.uints.length; + while (j-- > 0) { + if (table.uints[j] != null) { + props.push(j + 1); + } + } + for (i in table.floats) { + props.push(parseFloat(i)); + } + for (i in table.bool) { + props.push(i === "true" ? true : false); + } + for (i in table.objs) { + props.push(table.objs[i][0]); + } + + // okay, so I'm faking it here + // regardless of what key is given, this function will return the next value + // not sure how to do it the "right way" right now + i = 0; + return [function (table, key) { + var entry; + do { + if (i >= props.length) { + return [null, null]; + } + key = props[i++]; + entry = lua_rawget(table, key); + } while (entry == null); + return [key, entry]; + }, table, null]; + }, + "pcall": function (func) { + try { + return [true].concat(func.apply(null, slice(arguments, 1))); + } catch (e) { + return [false, e.message]; + } + }, + "print": lua_print, + "rawequal": function (op1, op2) { + return [(op1 == op2) || (op1 == null && op2 == null)]; + }, + "rawget": function (table, key) { + if (typeof table == "object" && table != null) { + return [lua_rawget(table, key)]; + } + throw new Error("Unable to index key " + key + " from " + table); + }, + "rawset": function (table, key, value) { + if (typeof table == "object" && table != null && key != null) { + lua_rawset(table, key, value); + return [table]; + } + throw new Error("Unable set key " + key + " in " + table); + }, + "select": function (n) { + if (n === "#") { + return [arguments.length - 1]; + } else { + n = lua_assertfloat(n); + if (n >= 1) { + return slice(arguments, lua_assertfloat(n)); + } else { + throw new Error("Index out of range"); + } + } + }, + "setfenv": function (func, table) { + not_supported(); + }, + "setmetatable": function (table, metatable) { + if (typeof table != "object" || table == null) { + throw new Error("table expected, got " + table); + } + if (metatable == null) { + delete table.metatable; + } else if (typeof metatable === "object") { + table.metatable = metatable; + } else { + throw new Error("table or nil expected, got " + metatable); + } + return [table] + }, + "tonumber": function (e, base) { + return [lua_tonumber(e, base)]; + }, + "tostring": function (e) { + if (e == null) { + return ["nil"]; + } + var h = e.metatable && e.metatable.str["__tostring"]; + if (h) { + return lua_rawcall(h, [e]); + } else { + switch (typeof e) { + case "number": + case "boolean": + return [e.toString()]; + case "string": + return [e]; + case "object": + return ["table"]; + case "function": + return ["function"]; + default: + return ["nil"]; + } + } + }, + "type": function (v) { + switch (typeof v) { + case "number": + return ["number"]; + case "string": + return ["string"]; + case "boolean": + return ["boolean"]; + case "function": + return ["function"]; + case "object": + return [v === null ? "nil" : "table"]; + case "undefined": + return ["nil"]; + default: + throw new Error("Unexpected value of type " + typeof v); + } + }, + "unpack": function (list, i, j) { + if (list.length != null) { + j = list.length; + } else { + j = 0; + while (list.uints[j++] != null) {}; + list.length = --j; + } + + if (i == null || i < 1) { + i = 1; + } + if (j == null) { + j = list.length; + } + throw new ReturnValues(list.uints.slice(i - 1, j)); + }, + "_VERSION": "Lua 5.1", + "xpcall": function () { + not_supported(); + } +}; + +// coroutine +var _lua_coroutine = lua_libs["coroutine"] = {}; +_lua_coroutine["resume"] = _lua_coroutine["running"] = _lua_coroutine["status"] = _lua_coroutine["wrap"] = _lua_coroutine["yield"] = _lua_coroutine["create"] = function () { + not_supported(); +}; + +// debug +var _lua_debug = lua_libs["debug"] = { + "getmetatable": function (obj) { + return [obj.metatable]; + } +}; +_lua_debug["traceback"] = _lua_debug["getfenv"] = _lua_debug["gethook"] = _lua_debug["getinfo"] = _lua_debug["getlocal"] = _lua_debug["getregistry"] = _lua_debug["getupvalue"] = _lua_debug["setfenv"] = _lua_debug["sethook"] = _lua_debug["setlocal"] = _lua_debug["setupvalue"] = _lua_debug["debug"] = function () { + not_supported(); +}; + +// io +var _lua_write_buffer = ""; +var _lua_io = lua_libs["io"] = { + "write": function () { + _lua_write_buffer += Array.prototype.join.call(arguments, ""); + var lines = _lua_write_buffer.split("\n"); + while (lines.length > 1) { + _lua_print(lines.shift()); + } + _lua_write_buffer = lines[0]; + return []; + }, + "flush": function () {},// no-op + "stderr": null, + "stdin": null, + "stdout": null +}; +_lua_io["close"] = _lua_io["input"] = _lua_io["lines"] = _lua_io["output"] = _lua_io["popen"] = _lua_io["read"] = _lua_io["tmpfile"] = _lua_io["type"] = _lua_io["open"] = function () { + not_supported(); +}; + +// math +var _lua_randmax = 0x100000000; +var _lua_randseed = (Math.random() * _lua_randmax) & (_lua_randmax - 1); +lua_libs["math"] = { + "abs": function (x) { + return [Math.abs(x)]; + }, + "acos": function (x) { + return [Math.acos(x)]; + }, + "asin": function (x) { + return [Math.asin(x)]; + }, + "atan": function (x) { + return [Math.atan(x)]; + }, + "atan2": function (y, x) { + return [Math.atan2(y, x)]; + }, + "ceil": function (x) { + return [Math.ceil(x)]; + }, + "cos": function (x) { + return [Math.cos(x)]; + }, + "cosh": function (x) { + return [(Math.exp(x) + Math.exp(-x)) / 2]; + }, + "deg": function (x) { + return [x * (180 / Math.PI)]; + }, + "exp": function (x) { + return [Math.exp(x)]; + }, + "floor": function (x) { + return [Math.floor(x)]; + }, + "fmod": function (x, y) { + return [x % y]; + }, + "frexp": function (m, e) { + not_supported(); + }, + "huge": Infinity, + "ldexp": function (m, e) { + return [m * Math.pow(2, e)]; + }, + "log": function (x) { + return [Math.log(x)]; + }, + "log10": function (x) { + return [Math.log(x) / Math.LN10]; + }, + "max": function () { + return [Math.max.apply(null, arguments)]; + }, + "min": function () { + return [Math.min.apply(null, arguments)]; + }, + "modf": function (x) { + var frac = x % 1; + return [x - frac, frac]; + }, + "pi": Math.PI, + "pow": function (x, y) { + return [Math.pow(x, y)]; + }, + "rad": function (x) { + return [x * (Math.PI / 180)]; + }, + "sin": function (x) { + return [Math.sin(x)]; + }, + "sinh": function (x) { + return [(Math.exp(x) - Math.exp(-x)) / 2]; + }, + "sqrt": function (x) { + return [Math.sqrt(x)]; + }, + "tan": function (x) { + return [Math.tan(x)]; + }, + "tanh": function (x) { + var a = Math.exp(x); + var b = Math.exp(-x); + return [(a - b) / (a + b)]; + }, + "random": function (m, n) { + // Based on the 32 bit mix function found here: + // http://www.concentric.net/~Ttwang/tech/inthash.htm + _lua_randseed = ~_lua_randseed + (_lua_randseed << 15); // _lua_randseed = (_lua_randseed << 15) - _lua_randseed - 1; + _lua_randseed = _lua_randseed ^ (_lua_randseed >>> 12); + _lua_randseed = _lua_randseed + (_lua_randseed << 2); + _lua_randseed = _lua_randseed ^ (_lua_randseed >>> 4); + _lua_randseed = _lua_randseed * 2057; // _lua_randseed = (_lua_randseed + (_lua_randseed << 3)) + (_lua_randseed << 11); + _lua_randseed = _lua_randseed ^ (_lua_randseed >>> 16); + + var val; + if (_lua_randseed < 0) { + val = ((_lua_randseed + _lua_randmax) / _lua_randmax) % 1; + } else { + val = (_lua_randseed / _lua_randmax) % 1; + } + + if (arguments.length >= 2) { + m = m | 0; + n = n | 0; + if (m >= n) { + throw new Error("Invalid range"); + } + return [Math.floor(val * (n - m + 1) + m)]; + } else if (arguments.length == 1) { + m = m | 0; + return [Math.floor(val * m + 1)]; + } else { + return [val]; + } + }, + "randomseed": function (x) { + _lua_randseed = x & (_lua_randmax - 1); + } +}; + +// os +// TODO: this should be different for each script, I think? +var _lua_clock_start = (new Date()).getTime() / 1000; +lua_libs["os"] = { + "clock": function () { + // This function is supposed to return the time the script has been executing + // not the time since it started, but I don't know of a way to do this. + return [(((new Date()).getTime()) / 1000) - _lua_clock_start]; + }, + "date": function (format, time) { + // TODO + return ["[" + time + "]" + format]; + }, + "difftime": function (t2, t1) { + return [t2 - t1]; + }, + "execute": function () { + return 0;// all commands fail + }, + "exit": function () { + //window.close(); + not_supported(); + }, + "getenv": function (varname) { + return [null]; + }, + "remove": function () { + not_supported(); + }, + "rename": function () { + not_supported(); + }, + "setlocale": function () { + not_supported(); + }, + "time": function (table) { + if (table) { + not_supported(); + } else { + return [Math.floor(new Date().getTime() / 1000)]; + } + } +}; + +// package +var lua_packages = lua_newtable(); +function lua_createmodule(G, name, options) { + var t = lua_tableget(lua_packages, name) || lua_tableget(G, name) || lua_newtable(); + lua_tableset(G, name, t); + lua_tableset(lua_packages, name, t); + lua_tableset(t, "_NAME", name); + lua_tableset(t, "_M", t); + lua_tableset(t, "_PACKAGE", name.split(".").slice(0, -1).join(".")); + + for (var i = 0; i < options.length; i++) { + lua_call(options[i], [t]); + } + return t; +} +function lua_module(name) { + var t = lua_tableget(lua_packages, name); + if (t == null) { + throw new Error("Module " + name + " not found. Module must be loaded before use."); + } + return t; +} +function lua_require(G, name) { + var t = lua_module(name); + var pkg = G; + var names = name.split("."); + for (var i = 0; i < names.length - 1; i++) { + if (!lua_tableget(pkg, names[i])) { + var newPkg = lua_newtable(); + lua_tableset(pkg, names[i], newPkg); + pkg = newPkg; + } + } + lua_tableset(pkg, names[names.length - 1], t); + return t; +} +lua_libs["package"] = { + "path": "", + "cpath": "", + "loaded": lua_packages, + "loaders": lua_newtable(),// not used + "preload": lua_newtable(),// not used + "loadlib": function () { + not_supported(); + } +}; + +function lua_pattern_to_regex(pattern) { + var notsupportedPatterns = [ + // hyphen quantifier + /%[aAcCdDgGlLpPsSuUwW]-/g, // after a chracter class + /(]|\))-/g, // after a set or parenthesis + /[^%]-(\)|%)/g, // not escaped, before a parenthesis or a character class + + /%(g|G)/g, // all printable characters except space. + + /(^[^%]+%b|%b.{2}.+$)/g, // a balanced pattern with something before or after it + + /%[0-9]{1}/g, // capture index + ]; + + for (var i in notsupportedPatterns) { + if (pattern.search(notsupportedPatterns[i]) != -1) { + not_supported(); + } + } + + var replacements = { + "%f\\[([^\\]]+)\\]": "[^$1]{1}[$1]{1}", // frontier pattern + + // character classes + "%a": "[a-zA-Z\u00C0-\u017F]", // all letters with accented characters À to ſ (shouldn't the down limit be much lower ?) + "%A": "[^a-zA-Z\u00C0-\u017F]", + + "%c": "[\u0000-\u001F]", // Control characters + "%C": "[^\u0000-\u001F]", + + "%d": "\\d", // all digit + "%D": "\\D", + + "%l": "[a-z\u00E0-\u00FF]", // lowercase letters + à to ÿ (below character 00FF, upper case and lowercase characters are mixed) + "%L": "[^a-z\u00E0-\u00FF]", + + "%p": "[,\?;\.:/\\!\(\)\[\]\{\}\"'#|%$`^@~&+*<>-]", // all punctuation + "%P": "[^,\?;\.:/\\!\(\)\[\]\{\}\"'#|%$`^@~&+*<>-]", + + "%s": "\\s", // all space characters + "%S": "\\S", + + "%u": "[A-Z\u00C0-\u00DF]", // uppercase letter + À to ß + "%U": "[^A-Z\u00C0-\u00DF]", + + "%w": "\\w", // all alphanum characters + "%W": "\\W", + + // escape special characters + "%\\.": "\\.", + "%\\^": "\\^", + "%\\$": "\\$", + "%\\(": "\\(", + "%\\)": "\\)", + "%\\[": "\\[", + "%\\]": "\\]", + "%\\*": "\\*", + "%\\+": "\\+", + "%\\-": "\\-", + "%\\?": "\\?", + "%%": "%", + }; + + for (var luaExp in replacements) { + pattern = pattern.replace(new RegExp(luaExp, "g"), replacements[luaExp]); + } + + return pattern; +} + +function get_balanced_match(s, pattern) { + var match = pattern.search(/%b.{1}.{1}/); // lua_pattern_to_regex() will leave balanced pattern untouched in the returned regex + if (match !== -1) { + var startChar = pattern[2]; + var endChar = pattern[3]; + var level = -1; + var startIndex = -1; + var startIndexes = []; + var endIndex = -1; + + for (var i in s) { + i = parseInt(i); + var _char = s[i]; + if (_char === startChar) { + startIndexes.push(i); + if (level < 0) { + startIndex = i; + level = 0; // in case one or more endChar were encountered first + } + level++; + } else if (_char === endChar) { + level--; + endIndex = i; + if (level === 0) { + break; + } + } + } + + if (level > 0) { // there was more startChar than endChar + startIndex = startIndexes[level]; + } + if (startIndex >= 0 && endIndex >= 0) { + return s.substring(startIndex, endIndex + 1); + } + } + return null; +} + +// string +lua_libs["string"] = { + "byte": function (s, i, j) { + s = check_string(s); + i = lua_tonumber(i); + j = lua_tonumber(j); + if (i == null) { + i = 1; + } + if (j == null) { + j = i; + } + i--; + j--; + var result = []; + while (i >= 0 && i <= j && i < s.length) { + result.push(s.charCodeAt(i++)); + } + return result; + }, + "char": function () { + return [String.fromCharCode.apply(null, arguments)]; + }, + "dump": function (func) { + not_supported(); + }, + "find": function (s, pattern, index, plain) { + s = check_string(s); + index = lua_tonumber(index); + if (index == null) { + index = 1; + } else if (index < 0) { + index = s.length + index; + } + index--; // -1 because Lua's arrays index starts at 1 instead of 0 + s = s.substr(index); + + if (plain == null || plain === false) { + pattern = lua_pattern_to_regex(pattern); + var match = get_balanced_match(s, pattern); + if (match !== null) { + pattern = match; + } else { + var matches = s.match(pattern); + if (matches !== null) { + pattern = matches[0]; + } else { + return [null]; + } + } + // pattern is now the matched string + } + + var start = s.indexOf(pattern); + var returnValues = [null]; + if (start != -1) { + returnValues = [start + index + 1, start + index + pattern.length]; + if (matches != null && matches[1] != null) { // string.find() returns the capture(s) (if any) after the indexes + returnValues = returnValues.concat(matches.slice(1)); + } + } + + return returnValues; + }, + "format": function () { + // sprintf.js, forked to match Lua's string.format() behavior and for use in lua.js + /* Copyright (c) 2007-2013, Alexandru Marasteanu + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of this software nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + var sprintf = function() { + if (!sprintf.cache.hasOwnProperty(arguments[0])) { + sprintf.cache[arguments[0]] = sprintf.parse(arguments[0]); + } + return sprintf.format.call(null, sprintf.cache[arguments[0]], arguments); + }; + sprintf.cache = {}; + + sprintf.format = function(parse_tree, argv) { + var cursor = 1; + var tree_length = parse_tree.length; + var node_type = ''; + var arg; + var output = []; + var i; + var k; + var match; + var pad; + var pad_character; + var pad_length; + for (i = 0; i < tree_length; i++) { + node_type = get_type(parse_tree[i]); + if (node_type === 'string') { + output.push(parse_tree[i]); + } else if (node_type === 'array') { + match = parse_tree[i]; // convenience purposes only + if (match[2]) { // keyword argument + arg = argv[cursor]; + for (k = 0; k < match[2].length; k++) { + if (!arg.hasOwnProperty(match[2][k])) { + throw new Error('[string.format()] property "'+match[2][k]+'" does not exist'); + } + arg = arg[match[2][k]]; + } + } else if (match[1]) { // positional argument (explicit) + arg = argv[match[1]]; + } else { // positional argument (implicit) + arg = argv[cursor++]; + } + + if (/[^sq]/.test(match[8]) && (get_type(arg) != 'number')) { + throw new Error('[string.format()] expecting number but found '+get_type(arg)); + } + switch (match[8]) { + case 'c': + arg = String.fromCharCode(arg); + break; + case 'i': + case 'd': // int + arg = parseInt(arg, 10); + break; + case 'e': + arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(6); + break; + case 'E': + arg = match[7] ? arg.toExponential(match[7]).toUpperCase() : arg.toExponential(6).toUpperCase(); + break; + case 'f': // float + arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg).toFixed(6); + break; + case 'g': + case 'G': + arg = match[7] ? parseFloat(arg).toFixed(match[7] - 1) : parseFloat(arg).toFixed(5); + // in practice, g or G always return a float with 1 less digits after the coma than asked for (by default it's 5 instead of 6) + break; + case 'o': // octal + if (arg < 0) { + arg = 0xFFFFFFFF + arg + 1; + } + arg = arg.toString(8); + break; + case 'u': // unsigned integer + arg = arg >>> 0; + break; + case 'x': // hexadecimal + if (arg < 0) { + arg = 0xFFFFFFFF + arg + 1; + } + arg = arg.toString(16); + break; + case 'X': + if (arg < 0) { + arg = 0xFFFFFFFF + arg + 1; + } + arg = arg.toString(16).toUpperCase(); + break; + case 'q': + arg = '"'+((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg)+'"'; + break; + case 's': + arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); + break; + default: + not_supported(); + } + if (/[eE]/.test(match[8])) { + //make the exponent (exp[2]) always at least 3 digit (ie : 3.14E+003) + var exp = /^(.+\+)(\d+)$/.exec(arg); + if (exp != null) { + if (exp[2].length == 1) { + arg = exp[1]+"00"+exp[2]; + } else if (exp[2].length == 2) { + arg = exp[1]+"0"+exp[2]; + } + } + } + arg = (/[dieEf]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg); + pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' '; + pad_length = match[6] - String(arg).length; + pad = match[6] ? str_repeat(pad_character, pad_length) : ''; + output.push(match[5] ? arg + pad : pad + arg); + } + } + return output.join(''); + }; + + sprintf.parse = function(fmt) { // fmt = format string + var _fmt = fmt; + var match = []; + var parse_tree = []; + var arg_names = 0; + while (_fmt) { + // \x25 = % + if ((match = /^[^\x25]+/.exec(_fmt)) !== null) { // no % found + parse_tree.push(match[0]); + } else if ((match = /^\x25{2}/.exec(_fmt)) !== null) { // 2 consecutive % found + parse_tree.push('%'); + } else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([cdeEfgGiouxXqs])/.exec(_fmt)) !== null) { + if (match[2]) { + arg_names |= 1; + var field_list = []; + var replacement_field = match[2]; + var field_match = []; + if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { + field_list.push(field_match[1]); + while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { + if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { + field_list.push(field_match[1]); + } else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) { + field_list.push(field_match[1]); + } else { + throw new Error('[string.format()] No field_match found in replacement_field 1.'); + } + } + } else { + throw new Error('[string.format()] No field_match found in replacement_field 2.'); + } + match[2] = field_list; + } else { + arg_names |= 2; + } + if (arg_names === 3) { + throw new Error('[string.format()] mixing positional and named placeholders is not (yet) supported'); + } + parse_tree.push(match); + } else { + throw new Error('[string.format()] Format string "'+fmt+'" not recognized.'); + } + _fmt = _fmt.substring(match[0].length); + } + return parse_tree; + }; + + function get_type(variable) { + var type = typeof variable; + if (type == "object" && Object.prototype.toString.call(variable) == "[object Array]") { + type = "array"; + } + return type; + } + + function str_repeat(input, multiplier) { + for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */} + return output.join(''); + } + + if (arguments.length > 0) { + arguments[0] = check_string(arguments[0]); + } + return [sprintf.apply(this, arguments)]; + }, + "gmatch": function (s, pattern) { + var lua_gmatch_next = function(data) { + var match = get_balanced_match(data.s, data.pattern); + if (match === null) { + var matches = data.s.match(data.pattern); + if (matches === null) { + return [null]; + } else { + if (matches[1] != null) { // if there was a capture, match[0] is the whole matched expression, match[1] the first capture + match = matches[1]; + } else { + match = matches[0]; + } + } + } + + data.s = data.s.substr(data.s.search(match) + match.length); + return [match]; + }; + + // an object is used to keep the modifs to the string accross calls to lua_gmatch_next() + return [lua_gmatch_next, {"s":check_string(s), "pattern":lua_pattern_to_regex(pattern)}]; + }, + "gsub": function (s, pattern, replacement, n) { + s = check_string(s); + n = lua_tonumber(n); + + pattern = lua_pattern_to_regex(pattern); + var regex = new RegExp(pattern); + + var replacementCount = 0; + var replacementType = typeof replacement; + if (replacementType == "string") { // replacement can be a function + replacement = replacement.replace(/%([0-9]+)/g, "$$$1"); + } + + var newS = ""; + var processMatch = function(match) { + var matchEndIndex = s.search(regex) + match.length; + var matchChunk = s.substr(0, matchEndIndex); + var newMatchChunk = ""; + + if (replacementType == "string") { + newMatchChunk = matchChunk.replace(regex, replacement); + } else if (replacementType == "function") { + var result = null; + // match is the whole expression matched by the pattern, now get captures + var matches = match.match(pattern); // not global to get the captures ! + + if (matches[1] != null) { + matches = matches.slice(1); + result = replacement.apply(null, matches)[0]; + } else { + result = replacement(match)[0]; // the function always returns an array + } + + if (result == null) { + newMatchChunk = matchChunk; + } else { + newMatchChunk = matchChunk.replace(regex, result); + } + } + newS += newMatchChunk; + s = s.substr(matchEndIndex); + + replacementCount++; + if (n !== null && replacementCount >= n) { + return false; // break + } + return true; + }; + + var match = get_balanced_match(s, pattern); + if (match !== null) { + var startChar = pattern[2]; + var endChar = pattern[3]; + // escape start and end char if they are special regex chars + var specialChars = ["[","]","(",")","{","}"]; // in this context it's not necessarily usefull to add others characters + if (specialChars.indexOf(startChar) !== -1) { + startChar = "\\"+startChar; + } + if (specialChars.indexOf(endChar) !== -1) { + endChar = "\\"+endChar; + } + + do { + match = get_balanced_match(s, pattern); + if (match === null) { + break; + } + regex = match.replace(new RegExp(startChar, "g"), startChar); + regex = regex.replace(new RegExp(endChar, "g"), endChar); + regex = new RegExp(regex); + } while (processMatch(match)); + } else { + var matches = s.match(new RegExp(pattern , 'g')); + + for (var i in matches) { + if (!processMatch(matches[i])) { + break; + } + } + } + + newS += s; + return [newS, replacementCount]; + }, + "len": function (s) { + return [check_string(s).length]; + }, + "lower": function (s) { + return [check_string(s).toLowerCase()]; + }, + "match": function (s, pattern, index) { + s = check_string(s); + index = lua_tonumber(index); + if (index === null) { + index = 1; + } else if (index < 0) { + index = s.length + index; + } + index--; + s = s.substr(index); + + pattern = lua_pattern_to_regex(pattern); + var match = get_balanced_match(s, pattern); + if (match === null) { + var matches = s.match(pattern); + if (matches !== null) { + if (matches[1] != null) { + match = matches[1]; + } else { + match = matches[0]; + } + } + } + return [match]; + }, + "rep": function (s, n) { + s = check_string(s); + n = lua_tonumber(n); + if (n !== null) { + var result = []; + while (n-- > 0) { + result.push(s); + } + return [result.join("")]; + } else { + throw new Error("Input not string and number"); + } + }, + "reverse": function (s) { + return [check_string(s).split("").reverse().join("")]; + }, + "sub": function (s, i, j) { + i = lua_tonumber(i); + j = lua_tonumber(j); + // thanks to ghoulsblade for pointing out the bugs in string.sub + i = i < 0 ? (i + s.length + 1) : (i >= 0 ? i : 0) + if (j == null) { + j = -1; + } + j = j < 0 ? (j + s.length + 1) : (j >= 0 ? j : 0) + if (i < 1) { + i = 1; + } + if (j > s.length) { + j = s.length; + } + if (i <= j) { + return [s.substr(i - 1, j - i + 1)]; + } else { + return [""]; + } + }, + "upper": function (s) { + return [check_string(s).toUpperCase()]; + } +}; + +// add string functions to every string +String.prototype["metatable"] = lua_newtable(null, "__index", lua_newtable2(lua_libs["string"])); + +// table +lua_libs["table"] = { + "concat": function (table, sep, i, j) { + if (sep == null) { + sep = ""; + } + if (i != null) { + if (j == null) { + j = table.uints.length; + } + return [table.uints.slice(i - 1, j).join(sep)]; + } else { + return [table.uints.join(sep)]; + } + }, + "insert": function (table, pos, value) { + if (arguments.length == 2) { + value = pos; + pos = table.uints.length + 1; + } + pos--; + if (table.uints[pos] == null) { + table.uints[pos] = value; + } else { + table.uints.splice(pos, 0, value); + } + if (table.length != null) { + table.length++; + } + return []; + }, + "maxn": function (table) { + var max = 0; + for (var i in table.uints) { + var val = parseFloat(i); + if (val > max) { + max = val; + } + } + return [max]; + }, + "remove": function (table, pos) { + if (pos == null) { + pos = table.uints.length; + } else { + pos = lua_assertfloat(pos); + } + if (table.uints.length) { + var value = table.uints[pos - 1]; + table.uints.splice(pos - 1, 1); + if (table.length != null) { + table.length--; + } + return [value]; + } else { + return []; + } + }, + "sort": function (table, comp) { + if (comp) { + table.uints.sort(function (a, b) { + return comp(a, b)[0] ? -1 : 1; + }); + } else { + table.uints.sort(function (a, b) { + return lua_lt(a, b) ? -1 : 1; + }); + } + return []; + } +}; + +// bit (based on BitOp ) +lua_libs["bit"] = { + "tobit": function (x) { + return [x << 0] + }, + "tohex": function (x, n) { + if (n > 0) { + var str = x.toString(16).substr(-n); + while (str.length < n) { + str = "0" + str; + } + return [str]; + } else if (n < 0) { + var str = x.toString(16).substr(n).toUpperCase(); + while (str.length < -n) { + str = "0" + str; + } + return [str]; + } else { + return [x.toString(16)] + } + }, + "bnot": function (x) { + return [~x]; + }, + "bor": function (x) { + x = lua_assertfloat(x); + for (var i = 1; i < arguments.length; i++) { + x |= arguments[i]; + } + return [x]; + }, + "band": function (x) { + x = lua_assertfloat(x); + for (var i = 1; i < arguments.length; i++) { + x &= arguments[i]; + } + return [x]; + }, + "bxor": function (x) { + x = lua_assertfloat(x); + for (var i = 1; i < arguments.length; i++) { + x ^= arguments[i]; + } + return [x]; + }, + "lshift": function (x, n) { + return [x << n]; + }, + "rshift": function (x, n) { + return [x >>> n]; + }, + "arshift": function (x, n) { + return [x >> n]; + }, + "rol": function (x, n) { + n &= 0xf; + return [(x << n) | (x >>> -n)]; + }, + "ror": function (x, n) { + n &= 0xf; + return [(x >>> n) | (x << -n)]; + }, + "bswap": function (x) { + // from Bit Twiddling hacks + x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); + x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); + x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4); + x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8); + x = (x >> 16) | (x << 16); + return [x]; + } +}; diff --git a/parser/luajs/lua_parser_umd.js b/parser/luajs/lua_parser_umd.js new file mode 100644 index 00000000..04d487d2 --- /dev/null +++ b/parser/luajs/lua_parser_umd.js @@ -0,0 +1,1441 @@ +/* parser generated by jison 0.4.18 */ +/* + Returns a Parser object of the following structure: + + Parser: { + yy: {} + } + + Parser.prototype: { + yy: {}, + trace: function(), + symbols_: {associative list: name ==> number}, + terminals_: {associative list: number ==> name}, + productions_: [...], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), + table: [...], + defaultActions: {...}, + parseError: function(str, hash), + parse: function(input), + + lexer: { + EOF: 1, + parseError: function(str, hash), + setInput: function(input), + input: function(), + unput: function(str), + more: function(), + less: function(n), + pastInput: function(), + upcomingInput: function(), + showPosition: function(), + test_match: function(regex_match_array, rule_index), + next: function(), + lex: function(), + begin: function(condition), + popState: function(), + _currentRules: function(), + topState: function(), + pushState: function(condition), + + options: { + ranges: boolean (optional: true ==> token location info will include a .range[] member) + flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) + backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) + }, + + performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), + rules: [...], + conditions: {associative list: name ==> set}, + } + } + + + token location info (@$, _$, etc.): { + first_line: n, + last_line: n, + first_column: n, + last_column: n, + range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) + } + + + the parseError function receives a 'hash' object with these members for lexer and parser errors: { + text: (matched text) + token: (the produced terminal token, if any) + line: (yylineno) + } + while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { + loc: (yylloc) + expected: (string describing the set of expected tokens) + recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) + } +*/ +var lua_parser = (function(){ +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[7,20,27,29,30,31,32,33,34,36,40,44,47,48,50,52],$V1=[2,2],$V2=[7,30,33,47,48,50,52],$V3=[2,17],$V4=[1,18],$V5=[1,7],$V6=[1,9],$V7=[1,10],$V8=[1,11],$V9=[1,12],$Va=[1,13],$Vb=[1,14],$Vc=[1,17],$Vd=[7,30,33,50,52],$Ve=[2,3],$Vf=[2,10],$Vg=[1,24],$Vh=[2,14],$Vi=[2,21],$Vj=[1,40],$Vk=[1,33],$Vl=[1,34],$Vm=[1,35],$Vn=[1,36],$Vo=[1,38],$Vp=[1,41],$Vq=[1,42],$Vr=[1,43],$Vs=[1,44],$Vt=[1,45],$Vu=[20,27,29,30,31,32,33,34,36,40,44,47,48],$Vv=[2,8],$Vw=[7,14,20,22,27,29,30,31,32,33,34,36,40,43,44,47,48,50,52,53,55,57,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,80,81,85,86],$Vx=[2,13],$Vy=[2,41],$Vz=[1,61],$VA=[1,58],$VB=[1,60],$VC=[1,63],$VD=[1,59],$VE=[7,14,20,22,25,27,29,30,31,32,33,34,36,38,40,43,44,47,48,50,52,53,55,57,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,80,81,85,86],$VF=[2,91],$VG=[7,14,30,33,50,52],$VH=[7,14,20,27,29,30,31,32,33,34,36,40,44,47,48,50,52],$VI=[7,14,20,25,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52],$VJ=[1,79],$VK=[1,80],$VL=[1,81],$VM=[1,82],$VN=[1,83],$VO=[1,84],$VP=[1,85],$VQ=[1,86],$VR=[1,87],$VS=[1,88],$VT=[1,89],$VU=[1,90],$VV=[1,91],$VW=[1,92],$VX=[1,93],$VY=[7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,81,86],$VZ=[1,104],$V_=[1,105],$V$=[7,14,20,22,27,29,30,31,32,33,34,36,38,40,43,44,47,48,50,52,53,55,57,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,80,81,85,86],$V01=[30,50,52],$V11=[20,43,55],$V21=[1,123],$V31=[7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52],$V41=[2,40],$V51=[7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,62,63,68,69,70,71,72,73,74,75,76,81,86],$V61=[7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,62,63,64,65,67,68,69,70,71,72,73,74,75,76,81,86],$V71=[14,38,81],$V81=[25,38,39],$V91=[7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,69,70,71,72,73,74,75,76,81,86],$Va1=[1,169],$Vb1=[20,40,44,56,57,58,59,61,63,77,78,79,80,85],$Vc1=[22,38],$Vd1=[1,192]; +var parser = {trace: function trace() { }, +yy: {}, +symbols_: {"error":2,"script":3,"indent":4,"chunk":5,"unindent":6,"EOF":7,"funcindent":8,"funcunindent":9,"block":10,"loopblock":11,"setinloop":12,"semi":13,";":14,"statlist":15,"laststat":16,"prefixexp":17,"var":18,"functioncall":19,"(":20,"exp":21,")":22,"stat":23,"varlist":24,"=":25,"explist":26,"LOCAL":27,"namelist":28,"DO":29,"END":30,"WHILE":31,"REPEAT":32,"UNTIL":33,"IF":34,"conds":35,"FOR":36,"namelist_setlocals":37,",":38,"IN":39,"FUNCTION":40,"funcname":41,"funcbody":42,":":43,"NAME":44,"mfuncbody":45,"name_setlocals":46,"RETURN":47,"BREAK":48,"condlist":49,"ELSE":50,"cond":51,"ELSEIF":52,"THEN":53,"arglist":54,".":55,"NUMBER":56,"STRING":57,"TRUE":58,"FALSE":59,"tableconstructor":60,"NIL":61,"+":62,"-":63,"*":64,"/":65,"^":66,"%":67,"..":68,"<":69,">":70,"<=":71,">=":72,"==":73,"~=":74,"AND":75,"OR":76,"NOT":77,"#":78,"...":79,"{":80,"}":81,"fieldlist":82,"fieldsepend":83,"addself":84,"[":85,"]":86,"args":87,"field":88,"fieldsep":89,"$accept":0,"$end":1}, +terminals_: {2:"error",7:"EOF",14:";",20:"(",22:")",25:"=",27:"LOCAL",29:"DO",30:"END",31:"WHILE",32:"REPEAT",33:"UNTIL",34:"IF",36:"FOR",38:",",39:"IN",40:"FUNCTION",43:":",44:"NAME",47:"RETURN",48:"BREAK",50:"ELSE",52:"ELSEIF",53:"THEN",55:".",56:"NUMBER",57:"STRING",58:"TRUE",59:"FALSE",61:"NIL",62:"+",63:"-",64:"*",65:"/",66:"^",67:"%",68:"..",69:"<",70:">",71:"<=",72:">=",73:"==",74:"~=",75:"AND",76:"OR",77:"NOT",78:"#",79:"...",80:"{",81:"}",85:"[",86:"]"}, +productions_: [0,[3,4],[4,0],[6,0],[8,1],[9,1],[10,3],[11,4],[12,0],[13,1],[13,0],[5,1],[5,3],[17,1],[17,1],[17,3],[15,3],[15,0],[23,3],[23,4],[23,2],[23,1],[23,3],[23,5],[23,4],[23,3],[23,11],[23,13],[23,9],[23,3],[23,5],[23,4],[16,2],[16,1],[16,1],[35,1],[35,3],[49,1],[49,3],[51,3],[24,3],[24,1],[26,3],[26,1],[37,3],[37,1],[28,3],[28,1],[46,1],[54,3],[54,1],[41,3],[41,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,2],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[21,2],[21,2],[21,2],[21,1],[60,2],[60,4],[42,6],[42,7],[42,7],[42,9],[45,7],[45,8],[45,8],[45,10],[84,0],[18,1],[18,4],[18,3],[19,2],[19,4],[87,3],[87,2],[87,1],[87,1],[82,1],[82,3],[88,1],[88,3],[88,5],[89,1],[89,1],[83,1],[83,1],[83,0]], +performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { +/* this == yyval */ + +var $0 = $$.length - 1; +switch (yystate) { +case 1: + + return "var tmp;\n" + + "var G = lua_newtable2(lua_core);\n" + + "for (var i in lua_libs) {\n" + + " G.str[i] = lua_newtable2(lua_libs[i]);\n" + + "}\n" + + "G.str['arg'] = lua_newtable();\n" + + "G.str['_G'] = G;\n" + + "G.str['module'] = function (name) {\n" + + " lua_createmodule(G, name, slice(arguments, 1));\n" + + "};\n" + + "G.str['require'] = function (name) {\n" + + " lua_require(G, name);\n" + + "};\n" + + "G.str['package'].str['seeall'] = function (module) {\n" + + " if (!module.metatable) {\n" + + " module.metatable = lua_newtable();\n" + + " }\n" + + " module.metatable.str['__index'] = G;\n" + + "};\n" + + "{\n" + + $$[$0-2].simple_form + "\n" + + "};\n" + + "return [G];"; + +break; +case 2: + + var localsCopy = {} + for (var i in locals) { + localsCopy[i] = locals[i]; + } + stack.push({locals: localsCopy, blockId: blockId, inLoop: inLoop}); + + indentLevel++; + blockIdMax++; + this.$ = blockId = blockIdMax; + +break; +case 3: + + var stackData = stack.pop(); + indentLevel--; + locals = stackData.locals; + inLoop = stackData.inLoop; + if (!inLoop) { + functionBlockAdded = false; + } + this.$ = blockId = stackData.blockId; + +break; +case 4: + + functionBlockAdded = false; + inLoop = false; + this.$ = $$[$0]; + +break; +case 5: + + functionBlockAdded = true; + this.$ = $$[$0]; + +break; +case 6: + this.$ = $$[$0-1] +break; +case 7: + + // if a function is declared inside of a loop, there are some differences + // with how variables behave due to the difference in scoping in JS and Lua + // by wrapping a loop block in a function call, we resolve these problems, but it + // is only necessary for situations where functions are declared inside of a loop + + if (functionBlockAdded) { + this.$ = { + block: $$[$0-1].varfix_form || $$[$0-1].simple_form, + use_function_block: true + }; + } else { + this.$ = {block: $$[$0-1].simple_form}; + } + +break; +case 8: + inLoop = true; +break; +case 9: case 10: case 105: case 106: case 107: case 108: + +break; +case 11: + + this.$ = {simple_form: indentStatlist($$[$0].simple_form)}; + if ($$[$0].varfix_form) { + this.$.varfix_form = indentStatlist($$[$0].varfix_form); + } + +break; +case 12: + + this.$ = {simple_form: indentStatlist($$[$0-2].simple_form, $$[$0-1].simple_form)}; + if ($$[$0-2].varfix_form || $$[$0-1].varfix_form) { + this.$.varfix_form = indentStatlist( + $$[$0-2].varfix_form || $$[$0-2].simple_form, $$[$0-1].varfix_form || $$[$0-1].simple_form); + } + +break; +case 13: + + if ($$[$0].access) { + this.$ = {single: "lua_tableget(" + $$[$0].prefixexp + ", " + $$[$0].access + ")", single_tableget: $$[$0]}; + } else { + this.$ = {single: $$[$0].prefixexp}; + } + +break; +case 14: + this.$ = {single: $$[$0] + "[0]", endmulti: $$[$0]}; +break; +case 15: + this.$ = {single: "(" + $$[$0-1].single + ")", simple_form: $$[$0-1].simple_form}; +break; +case 16: + + if ($$[$0].simple_form) { + this.$ = {simple_form: $$[$0-2].simple_form + "\n" + $$[$0].simple_form}; + if ($$[$0-2].varfix_form || $$[$0].varfix_form) { + this.$.varfix_form = ($$[$0-2].varfix_form || $$[$0-2].simple_form) + "\n" + ($$[$0].varfix_form || $$[$0].simple_form); + } + } else { + this.$ = $$[$0-2]; + } + +break; +case 17: + this.$ = {simple_form: ""}; +break; +case 18: + + var tmp; + if ($$[$0-2].length == 1) { + // avoid tmp entirely for certain situations + if ($$[$0].exps.length == 1) { + if ($$[$0-2][0].access) { + tmp = "lua_tableset(" + $$[$0-2][0].prefixexp + ", " + $$[$0-2][0].access + ", " + $$[$0].exps[0] + ");"; + } else { + tmp = $$[$0-2][0].prefixexp + " = " + $$[$0].exps[0] + ";"; + } + } else { + if ($$[$0-2][0].access) { + tmp = "lua_tableset(" + $$[$0-2][0].prefixexp + ", " + $$[$0-2][0].access + ", " + getTempDecl($$[$0]) + "[0]);"; + } else { + tmp = $$[$0-2][0].prefixexp + " = " + getTempDecl($$[$0]) + "[0];"; + } + } + } else { + tmp = "tmp = " + getTempDecl($$[$0]) + "; "; + for (var i = 0; i < $$[$0-2].length; i++) { + if ($$[$0-2][i].access) { + tmp += "lua_tableset(" + $$[$0-2][i].prefixexp + ", " + $$[$0-2][i].access + ", tmp[" + i + "]); "; + } else { + tmp += $$[$0-2][i].prefixexp + " = tmp[" + i + "]; "; + } + } + tmp += "tmp = null;"; + } + this.$ = {simple_form: tmp}; + +break; +case 19: + + var tmp; + $$[$0-2] = setLocals($$[$0-2]); + if ($$[$0-2].length == 1) { + // avoid tmp entirely for certain situations + if ($$[$0].exps.length == 1) { + tmp = "var " + $$[$0-2][0] + " = " + $$[$0].exps[0] + ";"; + } else { + tmp = "var " + $$[$0-2][0] + " = " + getTempDecl($$[$0]) + "[0];"; + } + } else { + tmp = "tmp = " + getTempDecl($$[$0]) + "; "; + for (var i = 0; i < $$[$0-2].length; i++) { + tmp += "var " + $$[$0-2][i] + " = tmp[" + i + "]; "; + } + tmp += "tmp = null;"; + } + this.$ = {simple_form: tmp}; + +break; +case 20: + this.$ = {simple_form: "var " + setLocals($$[$0]).join(", ") + ";"}; +break; +case 21: + this.$ = {simple_form: $$[$0] + ";"}; +break; +case 22: + + this.$ = {simple_form: "// do\n" + $$[$0-1].simple_form + "\n// end"}; + if ($$[$0-1].varfix_form) { + this.$.varfix_form = "// do\n" + $$[$0-1].varfix_form + "\n// end"; + } + +break; +case 23: + this.$ = {simple_form: "while (" + getIfExp($$[$0-3]) + ") " + autoFunctionBlock($$[$0-1])}; +break; +case 24: + this.$ = {simple_form: "do " + autoFunctionBlock($$[$0-2]) + " while (!(" + getIfExp($$[$0]) + "));"}; +break; +case 25: + + this.$ = $$[$0-1] + +break; +case 26: + + if ($$[$0-8].length != 1) { + throw new Error("Only one value allowed in for..= loop"); + } + if ($$[$0-2].use_function_block) { + this.$ = {simple_form: "var var_" + $$[$0-9] + " = " + autoAssertFloat($$[$0-6]) + ", " + + "stop_" + $$[$0-9] + " = " + autoAssertFloat($$[$0-4]) + ";\n" + + "for (; var_" + $$[$0-9] + " <= stop_" + $$[$0-9] + "; var_" + $$[$0-9] + "++) (function() {\n" + + " var " + $$[$0-8][0] + " = var_" + $$[$0-9] + ";\n" + + $$[$0-2].block + "\n" + + "})();"}; + } else { + this.$ = {simple_form: "var var_" + $$[$0-9] + " = " + autoAssertFloat($$[$0-6]) + ", " + + "stop_" + $$[$0-9] + " = " + autoAssertFloat($$[$0-4]) + ";\n" + + "for (; var_" + $$[$0-9] + " <= stop_" + $$[$0-9] + "; var_" + $$[$0-9] + "++) {\n" + + " var " + $$[$0-8][0] + " = var_" + $$[$0-9] + ";\n" + + $$[$0-2].block + + "\n}"}; + } + +break; +case 27: + + if ($$[$0-10].length != 1) { + throw new Error("Only one value allowed in for..= loop"); + } + + var tmp = "var var_" + $$[$0-11] + " = " + autoAssertFloat($$[$0-8]) + ", " + + "stop_" + $$[$0-11] + " = " + autoAssertFloat($$[$0-6]) + ", " + + "step_" + $$[$0-11] + " = " + autoAssertFloat($$[$0-4]) + ";\n" + + "for (; step_" + $$[$0-11] + " > 0 ? var_" + $$[$0-11] + " <= stop_" + $$[$0-11] + " : var_" + $$[$0-11] + " >= stop_" + $$[$0-11] + "; var_" + $$[$0-11] + " += step_" + $$[$0-11] + ") "; + if ($$[$0-2].use_function_block) { + tmp += "(function () {\n"; + } else { + tmp += "{\n"; + } + tmp += " var " + $$[$0-10][0] + " = var_" + $$[$0-11] + ";\n" + + $$[$0-2].block + "\n"; + if ($$[$0-2].use_function_block) { + tmp += "\n})();"; + } else { + tmp += "\n}"; + } + this.$ = {simple_form: tmp}; + +break; +case 28: + + var tmp; + tmp = "tmp = " + getTempDecl($$[$0-4]) + ";\n" + + "var f_" + $$[$0-7] + " = tmp[0], " + + "s_" + $$[$0-7] + " = tmp[1], " + + "var_" + $$[$0-7] + " = tmp[2];\n"; + + if ($$[$0-6].length == 1 && !$$[$0-2].use_function_block) { + // simple form of this loop that works in certain situations + tmp += "tmp = null;\n" + + "while ((var_" + $$[$0-7] + " = lua_call(f_" + $$[$0-7] + ", [s_" + $$[$0-7] + ", var_" + $$[$0-7] + "])[0]) != null) {\n" + + " var " + $$[$0-6][0] + " = var_" + $$[$0-7] + ";\n" + + $$[$0-2].block + + "\n}"; + } else { + tmp += "while ((tmp = lua_call(f_" + $$[$0-7] + ", [s_" + $$[$0-7] + ", var_" + $$[$0-7] + "]))[0] != null) "; + if ($$[$0-2].use_function_block) { + tmp += "(function () {\n"; + } else { + tmp += "{\n"; + } + tmp += " var_" + $$[$0-7] + " = tmp[0];\n" + + " var " + $$[$0-6][0] + " = var_" + $$[$0-7]; + for (var i = 1; i < $$[$0-6].length; i++) { + tmp += ", " + $$[$0-6][i] + " = tmp[" + i + "]"; + } + tmp += ";\n" + + " tmp = null;\n" + + $$[$0-2].block + "\n"; + if ($$[$0-2].use_function_block) { + tmp += "})();"; + } else { + tmp += "}"; + } + tmp += "\ntmp = null;"; + } + this.$ = {simple_form: tmp}; + +break; +case 29: + + var tmp = getLocal($$[$0-1][0], "G.str['" + $$[$0-1][0] + "']"); + if ($$[$0-1].length > 1) { + for (var i = 1; i < $$[$0-1].length - 1; i++) { + tmp = "lua_tableget(" + tmp + ", '" + $$[$0-1][i] + "')"; + } + this.$ = {simple_form: "lua_tableset(" + tmp + ", '" + $$[$0-1][i] + "', " + $$[$0] + ")"}; + } else { + this.$ = {simple_form: tmp + " = " + $$[$0]}; + } + +break; +case 30: + + var tmp = getLocal($$[$0-3][0], "G.str['" + $$[$0-3][0] + "']"); + for (var i = 1; i < $$[$0-3].length; i++) { + tmp = "lua_tableget(" + tmp + ", '" + $$[$0-3][i] + "')"; + } + this.$ = {simple_form: "lua_tableset(" + tmp + ", '" + $$[$0-1] + "', " + $$[$0] + ")"}; + +break; +case 31: + + this.$ = {simple_form: "var " + $$[$0-1] + " = " + $$[$0] + ";"}; + +break; +case 32: + + this.$ = { + simple_form: "return " + getTempDecl($$[$0]) + ";", + varfix_form: "throw new ReturnValues(" + getTempDecl($$[$0]) + ");" + }; + +break; +case 33: + + this.$ = { + simple_form: "return [];", + varfix_form: "throw new ReturnValues();" + }; + +break; +case 34: + + this.$ = { + simple_form: "break;", + varfix_form: "return;" + }; + +break; +case 35: case 37: + + this.$ = $$[$0]; + +break; +case 36: + + this.$ = {simple_form: $$[$0-2].simple_form + " else {\n" + $$[$0].simple_form + "\n}"}; + if ($$[$0-2].varfix_form || $$[$0].varfix_form) { + this.$.varfix_form = ($$[$0-2].varfix_form || $$[$0-2].simple_form) + " else {\n" + ($$[$0].varfix_form || $$[$0].simple_form) + "\n}"; + } + +break; +case 38: + + this.$ = {simple_form: $$[$0-2].simple_form + " else " + $$[$0].simple_form}; + if ($$[$0-2].varfix_form || $$[$0].varfix_form) { + this.$.varfix_form = ($$[$0-2].varfix_form || $$[$0-2].simple_form) + " else " + ($$[$0].varfix_form || $$[$0].simple_form) + } + +break; +case 39: + + this.$ = {simple_form: "if (" + getIfExp($$[$0-2]) + ") {\n" + $$[$0].simple_form + "\n}"}; + if ($$[$0].varfix_form) { + this.$.varfix_form = "if (" + getIfExp($$[$0-2]) + ") {\n" + $$[$0].varfix_form + "\n}"; + } + +break; +case 40: case 46: case 51: + this.$ = $$[$0-2].concat([$$[$0]]); +break; +case 41: case 47: case 52: + this.$ = [$$[$0]]; +break; +case 42: + this.$ = {exps: $$[$0-2].exps.concat([$$[$0].single]), endmulti: $$[$0].endmulti}; +break; +case 43: + this.$ = {exps: [$$[$0].single], endmulti: $$[$0].endmulti}; +break; +case 44: + this.$ = $$[$0-2].concat([setLocal($$[$0])]); +break; +case 45: + this.$ = [setLocal($$[$0])]; +break; +case 48: + this.$ = setLocal($$[$0]); +break; +case 49: + this.$ = $$[$0-2].concat([setLocal($$[$0], "_" + $$[$0])]); +break; +case 50: + this.$ = [setLocal($$[$0], "_" + $$[$0])]; +break; +case 53: + this.$ = {single: $$[$0], is_number: true}; +break; +case 54: case 57: + this.$ = {single: $$[$0]}; +break; +case 55: + this.$ = {single: 'true', simple_form: 'true'}; +break; +case 56: + this.$ = {single: 'false', simple_form: 'false'}; +break; +case 58: + this.$ = {single: 'null', simple_form: 'null'}; +break; +case 59: case 100: + this.$ = $$[$0]; +break; +case 60: + + this.$ = {single: $$[$0]}; + +break; +case 61: + + if ($$[$0-2].is_number && $$[$0].is_number) { + this.$ = {single: '(' + $$[$0-2].single + ' + ' + $$[$0].single + ')', is_number: true}; + } else { + this.$ = {single: 'lua_add(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; + } + +break; +case 62: + + if ($$[$0-2].is_number && $$[$0].is_number) { + this.$ = {single: '(' + $$[$0-2].single + ' - ' + $$[$0].single + ')', is_number: true}; + } else { + this.$ = {single: 'lua_subtract(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; + } + +break; +case 63: + + if ($$[$0-2].is_number && $$[$0].is_number) { + this.$ = {single: '(' + $$[$0-2].single + ' * ' + $$[$0].single + ')', is_number: true}; + } else { + this.$ = {single: 'lua_multiply(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; + } + +break; +case 64: + + if ($$[$0-2].is_number && $$[$0].is_number) { + this.$ = {single: '(' + $$[$0-2].single + ' / ' + $$[$0].single + ')', is_number: true}; + } else { + this.$ = {single: 'lua_divide(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; + } + +break; +case 65: + + if ($$[$0-2].is_number && $$[$0].is_number) { + this.$ = {single: 'Math.pow(' + $$[$0-2].single + ', ' + $$[$0].single + ')', is_number: true}; + } else { + this.$ = {single: 'lua_power(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; + } + +break; +case 66: + this.$ = {single: 'lua_mod(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; +break; +case 67: + this.$ = {single: 'lua_concat(' + $$[$0-2].single + ', ' + $$[$0].single + ')'}; +break; +case 68: + + this.$ = { + single: 'lua_lt(' + $$[$0-2].single + ', ' + $$[$0].single + ')', + simple_form: 'lua_lt(' + $$[$0-2].single + ', ' + $$[$0].single + ')' + }; + +break; +case 69: + + this.$ = { + single: 'lua_lt(' + $$[$0].single + ', ' + $$[$0-2].single + ')', + simple_form: 'lua_lt(' + $$[$0].single + ', ' + $$[$0-2].single + ')' + }; + +break; +case 70: + + this.$ = { + single: 'lua_lte(' + $$[$0-2].single + ', ' + $$[$0].single + ')', + simple_form: 'lua_lte(' + $$[$0-2].single + ', ' + $$[$0].single + ')' + }; + +break; +case 71: + + this.$ = { + single: 'lua_lte(' + $$[$0].single + ', ' + $$[$0-2].single + ')', + simple_form: 'lua_lte(' + $$[$0].single + ', ' + $$[$0-2].single + ')' + }; + +break; +case 72: + + this.$ = { + single: 'lua_eq(' + $$[$0-2].single + ', ' + $$[$0].single + ')', + simple_form: 'lua_eq(' + $$[$0-2].single + ', ' + $$[$0].single + ')' + }; + +break; +case 73: + + this.$ = { + single: '!lua_eq(' + $$[$0-2].single + ', ' + $$[$0].single + ')', + simple_form: '!lua_eq(' + $$[$0-2].single + ', ' + $$[$0].single + ')' + }; + +break; +case 74: + + this.$ = { + single: 'lua_and(' + $$[$0-2].single + ', function () {return ' + $$[$0].single + ';})', + simple_form: '(' + getIfExp($$[$0-2]) + ' && ' + getIfExp($$[$0]) + ')' + }; + +break; +case 75: + + this.$ = { + single: 'lua_or(' + $$[$0-2].single + ', function () {return ' + $$[$0].single + ';})', + simple_form: '(' + getIfExp($$[$0-2]) + ' || ' + getIfExp($$[$0]) + ')' + }; + +break; +case 76: + this.$ = {single: $$[$0].is_number ? ('-' + $$[$0].single) : ('lua_unm(' + $$[$0].single + ')'), is_number: $$[$0].is_number}; +break; +case 77: + + this.$ = { + single: 'lua_not(' + $$[$0].single + ')', + simple_form: 'lua_not(' + $$[$0].single + ')' + }; + +break; +case 78: + this.$ = {single: 'lua_len(' + $$[$0].single + ')'}; +break; +case 79: + this.$ = {single: 'varargs[0]', endmulti: 'varargs'}; +break; +case 80: + this.$ = "lua_newtable()"; +break; +case 81: + + this.$ = "lua_newtable(" + getTempDecl($$[$0-2]); + if ($$[$0-2].keyed) { + for (var i in $$[$0-2].keyed) { + this.$ += ", " + $$[$0-2].keyed[i][0] + ", " + $$[$0-2].keyed[i][1]; + } + } + this.$ += ")"; + +break; +case 82: + this.$ = createFunction([], $$[$0-2]); +break; +case 83: + this.$ = createFunction($$[$0-4], $$[$0-2]); +break; +case 84: + this.$ = createFunction([], $$[$0-2], true); +break; +case 85: + this.$ = createFunction($$[$0-6], $$[$0-2], true); +break; +case 86: + this.$ = createFunction(["self"], $$[$0-2]); +break; +case 87: + this.$ = createFunction(["self"].concat($$[$0-4]), $$[$0-2]); +break; +case 88: + this.$ = createFunction(["self"], $$[$0-2], true); +break; +case 89: + this.$ = createFunction(["self"].concat($$[$0-6]), $$[$0-2], true); +break; +case 90: + setLocal("self", "self") +break; +case 91: + this.$ = {prefixexp: getLocal($$[$0], "G.str['" + $$[$0] + "']")}; +break; +case 92: + this.$ = {prefixexp: $$[$0-3].single, access: $$[$0-1].single}; +break; +case 93: + this.$ = {prefixexp: $$[$0-2].single, access: "'" + $$[$0] + "'"}; +break; +case 94: + + if ($$[$0-1].single_tableget) { + this.$ = "lua_tablegetcall(" + $$[$0-1].single_tableget.prefixexp + ", " + $$[$0-1].single_tableget.access + ", " + getTempDecl($$[$0]) + ")"; + } else { + this.$ = "lua_call(" + $$[$0-1].single + ", " + getTempDecl($$[$0]) + ")"; + } + +break; +case 95: + this.$ = "lua_mcall(" + $$[$0-3].single + ", '" + $$[$0-1] + "', " + getTempDecl($$[$0]) + ")"; +break; +case 96: + this.$ = $$[$0-1]; +break; +case 97: + this.$ = {exps: []}; +break; +case 98: case 99: + this.$ = {exps: [$$[$0]]}; +break; +case 101: + + this.$ = { + keyed: $$[$0-2].keyed.concat($$[$0].keyed), + exps: $$[$0-2].exps.concat($$[$0].exps), + endmulti: $$[$0].endmulti + }; + +break; +case 102: + this.$ = {keyed: [], exps: [$$[$0].single], endmulti: $$[$0].endmulti}; +break; +case 103: + this.$ = {keyed: [["'" + $$[$0-2] + "'", $$[$0].single]], exps: []}; +break; +case 104: + this.$ = {keyed: [[$$[$0-3].single, $$[$0].single]], exps: []}; +break; +} +}, +table: [o($V0,$V1,{3:1,4:2}),{1:[3]},o($V2,$V3,{5:3,15:4,23:5,24:6,19:8,18:15,17:16,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),o($Vd,$Ve,{6:19}),o($Vd,[2,11],{16:20,47:[1,21],48:[1,22]}),o($V0,$Vf,{13:23,14:$Vg}),{25:[1,25],38:[1,26]},{28:27,40:[1,28],44:[1,29]},o([22,38,43,53,55,57,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,80,81,85,86],$Vh,{7:$Vi,14:$Vi,20:$Vi,27:$Vi,29:$Vi,30:$Vi,31:$Vi,32:$Vi,33:$Vi,34:$Vi,36:$Vi,40:$Vi,44:$Vi,47:$Vi,48:$Vi,50:$Vi,52:$Vi}),o($V0,$V1,{10:30,4:31}),{17:39,18:46,19:47,20:$V4,21:32,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($Vu,$Vv,{11:48,12:49}),{17:39,18:46,19:47,20:$V4,21:53,35:50,40:$Vj,44:$Vc,49:51,51:52,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($V0,$V1,{4:54}),{41:55,44:[1,56]},o($Vw,$Vx,{25:$Vy,38:$Vy}),{20:$Vz,43:$VA,55:$VB,57:$VC,60:62,80:$Vt,85:$VD,87:57},o($VE,$VF),{17:39,18:46,19:47,20:$V4,21:64,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{7:[1,65]},o($V0,$Vf,{13:66,14:$Vg}),o($VG,[2,33],{60:37,17:39,18:46,19:47,26:67,21:68,20:$V4,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt}),o($VG,[2,34]),o($V2,$V3,{23:5,24:6,19:8,18:15,17:16,15:69,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),o($V0,[2,9]),{17:39,18:46,19:47,20:$V4,21:68,26:70,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:16,18:71,19:47,20:$V4,44:$Vc},o($VH,[2,20],{25:[1,72],38:[1,73]}),{44:[1,75],46:74},o($VI,[2,47]),{30:[1,76]},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:77,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{29:[1,78],62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX},o($VY,[2,53]),o($VY,[2,54]),o($VY,[2,55]),o($VY,[2,56]),o($VY,[2,57]),o($VY,[2,58]),o([7,14,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,81,86],[2,59],{87:57,60:62,20:$Vz,43:$VA,55:$VB,57:$VC,80:$Vt,85:$VD}),o($V0,$V1,{42:94,8:95,4:96}),{17:39,18:46,19:47,20:$V4,21:97,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:98,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:99,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($VY,[2,79]),{17:39,18:46,19:47,20:$V4,21:103,40:$Vj,44:$VZ,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt,81:[1,100],82:101,85:$V_,88:102},o($V$,$Vx),o($V$,$Vh),{33:[1,106]},o($V0,$V1,{4:107}),{30:[1,108]},{30:[2,35],50:[1,109],52:[1,110]},o($V01,[2,37]),{53:[1,111],62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX},{37:112,44:[1,113]},o($V0,$V1,{8:95,4:96,42:114,43:[1,115],55:[1,116]}),o($V11,[2,52]),o($V$,[2,94]),{44:[1,117]},{17:39,18:46,19:47,20:$V4,21:118,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{44:[1,119]},{17:39,18:46,19:47,20:$V4,21:68,22:[1,121],26:120,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($V$,[2,98]),o($V$,[2,99]),{22:[1,122],62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX},{1:[2,1]},o($Vd,[2,12]),o($VG,[2,32],{38:$V21}),o($V31,[2,43],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX}),o($V2,[2,16]),o($VH,[2,18],{38:$V21}),o($Vw,$Vx,{25:$V41,38:$V41}),{17:39,18:46,19:47,20:$V4,21:68,26:124,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{44:[1,125]},o($V0,$V1,{8:95,4:96,42:126}),{20:[2,48]},o($VH,[2,22]),o($Vd,$Ve,{6:127}),o($Vu,$Vv,{12:49,11:128}),{17:39,18:46,19:47,20:$V4,21:129,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:130,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:131,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:132,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:133,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:134,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:135,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:136,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:137,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:138,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:139,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:140,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:141,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:142,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:143,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($VY,[2,60]),{20:[1,144]},{20:[2,4]},o($V51,[2,76],{64:$VL,65:$VM,66:$VN,67:$VO}),o($V61,[2,77],{66:$VN}),o($V61,[2,78],{66:$VN}),o($V$,[2,80]),{14:[1,147],38:[1,148],81:[2,109],83:145,89:146},o($V71,[2,100]),o($V71,[2,102],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX}),o($V$,$VF,{25:[1,149]}),{17:39,18:46,19:47,20:$V4,21:150,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:151,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:152,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),o($VH,[2,25]),o($V0,$V1,{4:31,10:153}),{17:39,18:46,19:47,20:$V4,21:53,40:$Vj,44:$Vc,51:154,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($V0,$V1,{4:31,10:155}),{25:[1,156],38:[1,158],39:[1,157]},o($V81,[2,45]),o($VH,[2,29]),{44:[1,159]},{44:[1,160]},{20:$Vz,57:$VC,60:62,80:$Vt,87:161},{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX,86:[1,162]},o($VE,[2,93]),{22:[1,163],38:$V21},o($V$,[2,97]),o($V$,[2,15]),{17:39,18:46,19:47,20:$V4,21:164,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($VH,[2,19],{38:$V21}),o($VI,[2,46]),o($VH,[2,31]),o($V01,[2,6]),{30:[1,165]},o($V51,[2,61],{64:$VL,65:$VM,66:$VN,67:$VO}),o($V51,[2,62],{64:$VL,65:$VM,66:$VN,67:$VO}),o($V61,[2,63],{66:$VN}),o($V61,[2,64],{66:$VN}),o($V61,[2,65],{66:$VN}),o($V61,[2,66],{66:$VN}),o($V91,[2,67],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o($V91,[2,68],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o($V91,[2,69],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o($V91,[2,70],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o($V91,[2,71],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o($V91,[2,72],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o($V91,[2,73],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP}),o([7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,75,76,81,86],[2,74],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV}),o([7,14,20,22,27,29,30,31,32,33,34,36,38,40,44,47,48,50,52,53,76,81,86],[2,75],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW}),{22:[1,166],44:$Va1,54:167,79:[1,168]},{81:[1,170]},{17:39,18:46,19:47,20:$V4,21:103,40:$Vj,44:$VZ,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt,85:$V_,88:171},o($Vb1,[2,105],{81:[2,107]}),o($Vb1,[2,106],{81:[2,108]}),{17:39,18:46,19:47,20:$V4,21:172,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX,86:[1,173]},o($VH,[2,24],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX}),o($Vd,$Ve,{6:174}),{30:[2,36]},o($V01,[2,38]),o($V01,[2,39]),{17:39,18:46,19:47,20:$V4,21:175,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:68,26:176,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{44:[1,177]},o($V0,$V1,{4:96,45:178,8:179}),o($V11,[2,51]),o($V$,[2,95]),o($VE,[2,92]),o($V$,[2,96]),o($V31,[2,42],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX}),o($VH,[2,23]),o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:180,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{22:[1,181],38:[1,182]},{22:[1,183]},o($Vc1,[2,50]),o($V$,[2,81]),o($V71,[2,101]),o($V71,[2,103],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX}),{25:[1,184]},o([30,33],[2,7]),{38:[1,185],62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX},{29:[1,186],38:$V21},o($V81,[2,44]),o($VH,[2,30]),{20:[2,90],84:187},o($Vd,$Ve,{9:188,6:189}),o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:190,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{44:$Vd1,79:[1,191]},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:193,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{17:39,18:46,19:47,20:$V4,21:194,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{17:39,18:46,19:47,20:$V4,21:195,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},o($Vu,$Vv,{12:49,11:196}),{20:[1,197]},{30:[1,198]},{30:[2,5]},o($Vd,$Ve,{6:189,9:199}),{22:[1,200]},o($Vc1,[2,49]),o($Vd,$Ve,{6:189,9:201}),o($V71,[2,104],{62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX}),{29:[1,202],38:[1,203],62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX},o($Vd,$Ve,{6:204}),{22:[1,205],44:$Va1,54:206,79:[1,207]},o($VY,[2,82]),{30:[1,208]},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:209,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{30:[1,210]},o($Vu,$Vv,{12:49,11:211}),{17:39,18:46,19:47,20:$V4,21:212,40:$Vj,44:$Vc,56:$Vk,57:$Vl,58:$Vm,59:$Vn,60:37,61:$Vo,63:$Vp,77:$Vq,78:$Vr,79:$Vs,80:$Vt},{30:[1,213]},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:214,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{22:[1,215],38:[1,216]},{22:[1,217]},o($VY,[2,83]),o($Vd,$Ve,{6:189,9:218}),o($VY,[2,84]),o($Vd,$Ve,{6:219}),{29:[1,220],62:$VJ,63:$VK,64:$VL,65:$VM,66:$VN,67:$VO,68:$VP,69:$VQ,70:$VR,71:$VS,72:$VT,73:$VU,74:$VV,75:$VW,76:$VX},o($VH,[2,28]),o($Vd,$Ve,{6:189,9:221}),o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:222,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{44:$Vd1,79:[1,223]},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:224,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{30:[1,225]},{30:[1,226]},o($Vu,$Vv,{12:49,11:227}),{30:[1,228]},o($Vd,$Ve,{6:189,9:229}),{22:[1,230]},o($Vd,$Ve,{6:189,9:231}),o($VY,[2,85]),o($VH,[2,26]),o($Vd,$Ve,{6:232}),o($VH,[2,86]),{30:[1,233]},o($V2,$V3,{15:4,23:5,24:6,19:8,18:15,17:16,5:234,20:$V4,27:$V5,29:$V6,31:$V7,32:$V8,34:$V9,36:$Va,40:$Vb,44:$Vc}),{30:[1,235]},{30:[1,236]},o($VH,[2,87]),o($Vd,$Ve,{6:189,9:237}),o($VH,[2,88]),o($VH,[2,27]),{30:[1,238]},o($VH,[2,89])], +defaultActions: {65:[2,1],75:[2,48],96:[2,4],153:[2,36],189:[2,5]}, +parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + var error = new Error(str); + error.hash = hash; + throw error; + } +}, +parse: function parse(input) { + var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + var lexer = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k)) { + sharedState.yy[k] = this.yy[k]; + } + } + lexer.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer; + sharedState.yy.parser = this; + if (typeof lexer.yylloc == 'undefined') { + lexer.yylloc = {}; + } + var yyloc = lexer.yylloc; + lstack.push(yyloc); + var ranges = lexer.options && lexer.options.ranges; + if (typeof sharedState.yy.parseError === 'function') { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n) { + stack.length = stack.length - 2 * n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + }; + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == 'undefined') { + symbol = lex(); + } + action = table[state] && table[state][symbol]; + } + if (typeof action === 'undefined' || !action.length || !action[0]) { + var errStr = ''; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push('\'' + this.terminals_[p] + '\''); + } + } + if (lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + } else { + errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); + } + this.parseError(errStr, { + text: lexer.match, + token: this.terminals_[symbol] || symbol, + line: lexer.yylineno, + loc: yyloc, + expected: expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer.yytext); + lstack.push(lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer.yyleng; + yytext = lexer.yytext; + yylineno = lexer.yylineno; + yyloc = lexer.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== 'undefined') { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; + } + } + return true; +}}; + + +var indentLevel = 0; +var blockId = 0; +var blockIdMax = 0; +var locals = {}; +var stack = []; +var functionBlockAdded = false; +var inLoop = false; + +function getLocal(name, alternative) { + if (!locals[name]) { + if (alternative) { + return alternative; + } + locals[name] = "_" + name + "_" + blockId; + } + return locals[name]; +} + +function setLocal(name, localName) { + return locals[name] = localName || "_" + name + "_" + blockId; +} + +function setLocals(names) { + var result = [] + for (var i = 0; i < names.length; i++) { + result[i] = setLocal(names[i]); + } + return result; +} + +function getTempDecl(explist) { + if (explist.endmulti) { + if (explist.exps.length > 1) { + return "[" + explist.exps.slice(0, -1).join(", ") + "].concat(" + explist.endmulti + ")"; + } else { + return explist.endmulti; + } + } else { + return "[" + explist.exps.join(", ") + "]"; + } +} + +function longStringToString(str) { + return '"' + str.substring(0, str.length - 2).replace(/^\[\[(\r\n|\r|\n)?/m, "").replace(/\n/mg, "\\n").replace(/\r/mg, "\\r").replace(/\"/mg, "\\\"") + '"'; +} + +function createFunction(args, body, hasVarargs) { + var result = "(function (" + args.join(", ") + ") {\n" + + " var tmp;\n"; + if (hasVarargs) { + result += " var varargs = slice(arguments, " + args.length + ");\n"; + } + return result + + body.simple_form + "\n" + + " return [];\n" + + "})"; +} + +function getIfExp(exp) { + return exp.simple_form || "lua_true(" + exp.single + ")"; +} + +function indentStatlist(statlist, laststat) { + return " " + ((statlist && laststat) ? statlist + "\n" + laststat : statlist + (laststat || "")).split("\n").join("\n "); +} + +function autoAssertFloat(possibleNumber) { + return possibleNumber.is_number ? possibleNumber.single : "lua_assertfloat(" + possibleNumber.single + ")"; +} + +function autoFunctionBlock(loopblock) { + return loopblock.use_function_block ? + "(function() {\n" + loopblock.block + "\n})();" : "{\n" + loopblock.block + "\n}"; +} +/* generated by jison-lex 0.3.4 */ +var lexer = (function(){ +var lexer = ({ + +EOF:1, + +parseError:function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); + } else { + throw new Error(str); + } + }, + +// resets the lexer, sets new input +setInput:function (input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0,0]; + } + this.offset = 0; + return this; + }, + +// consumes and returns one char from the input +input:function () { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + + this._input = this._input.slice(1); + return ch; + }, + +// unshifts one char (or a string) into the input +unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r = this.yylloc.range; + + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + + oldLines[oldLines.length - lines.length].length - lines[0].length : + this.yylloc.first_column - len + }; + + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, + +// When called from action, caches matched text and appends it on next action +more:function () { + this._more = true; + return this; + }, + +// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. +reject:function () { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + + } + return this; + }, + +// retain first n characters of the match +less:function (n) { + this.unput(this.match.slice(n)); + }, + +// displays already matched input, i.e. for error messages +pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, + +// displays upcoming input, i.e. for error messages +upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, + +// displays the character position where the lexing error occurred, i.e. for error messages +showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, + +// test the lexed token: return FALSE when not a match, otherwise return token +test_match:function (match, indexed_rule) { + var token, + lines, + backup; + + if (this.options.backtrack_lexer) { + // save context + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? + lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : + this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token) { + return token; + } else if (this._backtrack) { + // recover context + for (var k in backup) { + this[k] = backup[k]; + } + return false; // rule action called reject() implying the next rule should be tested instead. + } + return false; + }, + +// return next match in input +next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + + var token, + match, + tempMatch, + index; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; // rule action called reject() implying a rule MISmatch. + } else { + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; + } + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, + +// return next match that has a token +lex:function lex() { + var r = this.next(); + if (r) { + return r; + } else { + return this.lex(); + } + }, + +// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) +begin:function begin(condition) { + this.conditionStack.push(condition); + }, + +// pop the previously active lexer condition state off the condition stack +popState:function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, + +// produce the lexer rule set which is active for the currently active lexer condition state +_currentRules:function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, + +// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available +topState:function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; + } else { + return "INITIAL"; + } + }, + +// alias for begin(condition) +pushState:function pushState(condition) { + this.begin(condition); + }, + +// return the number of states currently on the stack +stateStackSize:function stateStackSize() { + return this.conditionStack.length; + }, +options: {}, +performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { +var YYSTATE=YY_START; +switch($avoiding_name_collisions) { +case 0:/* skip whitespace */ +break; +case 1:/* skip multiline comment */ +break; +case 2:/* skip comment */ +break; +case 3:return 56; +break; +case 4:return 56; +break; +case 5:return 56; +break; +case 6:return 57; +break; +case 7:return 57; +break; +case 8:yy_.yytext = longStringToString(yy_.yytext); return 57; +break; +case 9:return 43; +break; +case 10:return 14; +break; +case 11:return 20; +break; +case 12:return 22; +break; +case 13:return 85; +break; +case 14:return 86; +break; +case 15:return 80; +break; +case 16:return 81; +break; +case 17:return 62; +break; +case 18:return 63; +break; +case 19:return 64; +break; +case 20:return 65; +break; +case 21:return 67; +break; +case 22:return 66; +break; +case 23:return 73; +break; +case 24:return 25; +break; +case 25:return 74; +break; +case 26:return 71; +break; +case 27:return 72; +break; +case 28:return 69; +break; +case 29:return 70; +break; +case 30:return 78; +break; +case 31:return 38; +break; +case 32:return 79; +break; +case 33:return 68; +break; +case 34:return 55; +break; +case 35:return 77; +break; +case 36:return 75; +break; +case 37:return 76; +break; +case 38:return 58; +break; +case 39:return 59; +break; +case 40:return 61; +break; +case 41:return 40; +break; +case 42:return 33; +break; +case 43:return 29; +break; +case 44:return 30; +break; +case 45:return 31; +break; +case 46:return 34; +break; +case 47:return 53; +break; +case 48:return 52; +break; +case 49:return 50; +break; +case 50:return 36; +break; +case 51:return 27; +break; +case 52:return 32; +break; +case 53:return 39; +break; +case 54:return 47; +break; +case 55:return 48; +break; +case 56:return 44; +break; +case 57:return 7; +break; +} +}, +rules: [/^(?:\s+)/,/^(?:--\[\[(.|\n|\r)*?\]\])/,/^(?:--.*)/,/^(?:0x[0-9a-fA-f]+)/,/^(?:\d+(\.\d*)?([eE]-?\d+)?)/,/^(?:\.\d+([eE]-?\d+)?)/,/^(?:"(\\.|[^"])*")/,/^(?:'(\\.|[^'])*')/,/^(?:\[\[(.|\n|\r)*?\]\])/,/^(?::)/,/^(?:;)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:\+)/,/^(?:-)/,/^(?:\*)/,/^(?:\/)/,/^(?:%)/,/^(?:\^)/,/^(?:==)/,/^(?:=)/,/^(?:~=)/,/^(?:<=)/,/^(?:>=)/,/^(?:<)/,/^(?:>)/,/^(?:#)/,/^(?:,)/,/^(?:\.\.\.)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:not\b)/,/^(?:and\b)/,/^(?:or\b)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:nil\b)/,/^(?:function\b)/,/^(?:until\b)/,/^(?:do\b)/,/^(?:end\b)/,/^(?:while\b)/,/^(?:if\b)/,/^(?:then\b)/,/^(?:elseif\b)/,/^(?:else\b)/,/^(?:for\b)/,/^(?:local\b)/,/^(?:repeat\b)/,/^(?:in\b)/,/^(?:return\b)/,/^(?:break\b)/,/^(?:[a-zA-Z_][a-zA-Z0-9_]*)/,/^(?:$)/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"inclusive":true}} +}); +return lexer; +})(); +parser.lexer = lexer; +function Parser () { + this.yy = {}; +} +Parser.prototype = parser;parser.Parser = Parser; +return new Parser; +})(); + + +if (typeof require !== 'undefined' && typeof exports !== 'undefined') { +exports.parser = lua_parser; +exports.Parser = lua_parser.Parser; +exports.parse = function () { return lua_parser.parse.apply(lua_parser, arguments); }; +exports.main = function commonjsMain(args) { + if (!args[1]) { + console.log('Usage: '+args[0]+' FILE'); + process.exit(1); + } + var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); + return exports.parser.parse(source); +}; +if (typeof module !== 'undefined' && require.main === module) { + exports.main(process.argv.slice(1)); +} +} \ No newline at end of file diff --git a/parser/processRawData.js b/parser/processRawData.js new file mode 100644 index 00000000..af0f6b69 --- /dev/null +++ b/parser/processRawData.js @@ -0,0 +1,466 @@ +const fse = require('fs-extra') +const nsg = require('node-sprite-generator') +const Jimp = require('jimp') +const util = require('util') +//const factorioDirectory = 'C:/SteamLibrary/steamapps/common/Factorio/data/' +const factorioDirectory = 'C:/_Programs/Steam/steamapps/common/Factorio/data/' +const outDir = '../src/bundles/' +const spritesheetsOutDir = '../src/spritesheets/' + +function nameMapping(imagePath) { + const sP = imagePath.split('/') + return sP.splice(sP.length - 2).join('/').split('.')[0] +} + +let rawData = JSON.parse(fse.readFileSync('./temp.json').toString() + .replace(/"(up|down|left|right|north|south|west|east)"/g, function(match, capture) { + if (capture === 'north' || capture === 'up') return '"0"' + if (capture === 'east' || capture === 'left') return '"2"' + if (capture === 'south' || capture === 'down') return '"4"' + if (capture === 'west' || capture === 'right') return '"6"' + })) + +let tiles = {} +for (const k in rawData.tile) { + if (rawData.tile[k].minable) tiles[k] = rawData.tile[k] +} +console.log('Tiles: ' + Object.keys(tiles).length) +fse.writeFileSync(outDir + 'tileBundle.json', JSON.stringify(tiles, null, 2).replace(/__base__|__core__/g, 'factorio-data')) + +console.log('Recipes: ' + Object.keys(rawData.recipe).length) +fse.writeFileSync(outDir + 'recipeBundle.json', JSON.stringify(rawData.recipe, null, 2).replace(/__base__|__core__/g, 'factorio-data')) + +let inventory = [] +let items = {} +let placeableEntities = ['curved-rail'] + +const blacklistedGroups = [ + 'environment', + 'enemies', + 'other' +] + +for (const k in rawData['item-group']) { + const group = rawData['item-group'][k] + if (!blacklistedGroups.includes(group.name)) { + group.subgroups = [] + inventory.push(group) + } +} + +for (const k in rawData['item-subgroup']) { + const subgroup = rawData['item-subgroup'][k] + subgroup.items = [] + for (const group of inventory) { + if (group.name === subgroup.group) { + group.subgroups.push(subgroup) + break + } + } +} + +function findAllItems(data) { + if (data.constructor === Object) { + if (data.hasOwnProperty('subgroup')) { + addItem(data) + } else { + for (const k in data) { + if (data.hasOwnProperty(k)) { + findAllItems(data[k]) + } + } + } + } +} + +findAllItems(rawData) + +for (const k in rawData['fluid']) { + const fluid = rawData['fluid'][k] + fluid.subgroup = 'fluid' + addItem(fluid) +} + +function addItem(item) { + if ((item.flags && item.flags.includes('hidden')) || !(item.icon || item.icons) || !item.order || item.collision_box) return + for (let j = 0; j < inventory.length; j++) { + for (let k = 0; k < inventory[j].subgroups.length; k++) { + if (inventory[j].subgroups[k].name === item.subgroup) { + inventory[j].subgroups[k].items.push(item) + if (item.place_result) placeableEntities.push(item.place_result) + items[item.name] = item + return + } + } + } +} + +console.log('Items: ' + Object.keys(items).length) +fse.writeFileSync(outDir + 'itemBundle.json', JSON.stringify(items, null, 2).replace(/"((__base__|__core__)\/.+?)"/g, function(match, capture) { + return '"icon:' + nameMapping(capture) + '"' +})) + +// sort and remove extra info from inventoryBundle +inventory.sort(sortByOrder) +for (let i = 0; i < inventory.length; i++) { + inventory[i].subgroups.sort(sortByOrder) + for (let j = 0; j < inventory[i].subgroups.length; j++) { + inventory[i].subgroups[j].items.sort(sortByOrder) + for (let k = 0; k < inventory[i].subgroups[j].items.length; k++) { + removeExtraInfo(inventory[i].subgroups[j].items[k]) + } + removeExtraInfo(inventory[i].subgroups[j]) + } + removeExtraInfo(inventory[i]) +} + +function sortByOrder(a, b) { + // https://forums.factorio.com/viewtopic.php?f=25&t=3236#p23818 + // https://forums.factorio.com/viewtopic.php?f=25&t=24163#p152955 + if (a.order < b.order) return -1 + if (a.order > b.order) return 1 + return 0 +} + +function removeExtraInfo(obj) { + for (const k of Object.keys(obj)) { + if (!['subgroups', 'items', 'name', 'icon', 'icons'].includes(k)) delete obj[k] + } +} + +fse.writeFileSync(outDir + 'inventoryBundle.json', JSON.stringify(inventory, null, 2).replace(/"((__base__|__core__)\/.+?)"/g, function(match, capture) { + return '"icon:' + nameMapping(capture) + '"' +})) + +let paths = [] +for (let i = 0, l = inventory.length; i < l; i++) { + paths.push(factorioDirectory + inventory[i].icon.replace(/__base__/g, 'base').replace(/__core__/g, 'core')) + for (let j = 0, l2 = inventory[i].subgroups.length; j < l2; j++) { + for (let k = 0, l3 = inventory[i].subgroups[j].items.length; k < l3; k++) { + const item = inventory[i].subgroups[j].items[k] + if (item.icon) { + paths.push(factorioDirectory + item.icon.replace(/__base__/g, 'base').replace(/__core__/g, 'core')) + } else { + for (let l = 0; l < item.icons.length; l++) { + paths.push(factorioDirectory + item.icons[l].icon.replace(/__base__/g, 'base').replace(/__core__/g, 'core')) + } + } + } + } +} +paths = Array.from(new Set(paths).values()) + +console.log('Icon sprites: ' + paths.length) +nsg({ + src: paths, + spritePath: spritesheetsOutDir + 'iconSpritesheet.png', + stylesheet: './json-icon.tpl', + stylesheetPath: spritesheetsOutDir + 'iconSpritesheet.json', + stylesheetOptions: { + prefix: 'icon:', + nameMapping: nameMapping + }, + compositor: 'jimp', + layout: 'packed', + layoutOptions: { + padding: 2 + } +}, function(err) { + if (err) + console.log(err) + else + console.log('Icon sprite atlas generated!') +}) + +let entities = {} +function findAllEntities(data) { + if (data.constructor === Object) { + if (placeableEntities.includes(data.name) && data.hasOwnProperty('collision_box') && (!data.flags.includes('placeable-off-grid') || data.name === 'land-mine')) { + entities[data.name] = data + } else { + for (let k in data) { + if (data.hasOwnProperty(k)) { + findAllEntities(data[k]) + } + } + } + } +} +findAllEntities(rawData) + +const regexNameMatches = [ + 'combinator', + 'underground-belt', + 'transport-belt', + 'splitter', + 'inserter', + 'turret', + 'mining-drill', + 'pump' +] + +let nameMatches = [ + 'assembling-machine-2', + 'assembling-machine-3', + 'pipe-to-ground', + 'oil-refinery', + 'chemical-plant', + 'heat-exchanger', + 'boiler', + 'train-stop' +] + +for (let k in entities) { + // Size + const box = entities[k].selection_box + entities[k].size = { + width: Math.ceil(Math.abs(box[0][0]) + Math.abs(box[1][0])), + height: Math.ceil(Math.abs(box[0][1]) + Math.abs(box[1][1])) + } + // Move out splitters and underground-belts from transport-belt fast_replaceable_group + if (k.search('splitter') !== -1) { + entities[k].fast_replaceable_group = 'splitter' + } + if (k.search('underground-belt') !== -1) { + entities[k].fast_replaceable_group = 'underground-belt' + } + // Possible Rotations + for (let j = 0; j < regexNameMatches.length; j++) { + if (k.includes(regexNameMatches[j])) { + nameMatches.push(k) + } + } +} +// Actual land size of the offshore pump +entities['offshore-pump'].size = { width: 1, height: 1 } + +for (let i = 0; i < nameMatches.length; i++) { + entities[nameMatches[i]].possible_rotations = [0, 2, 4, 6] +} +entities['storage-tank'].possible_rotations = [0, 2] +entities['gate'].possible_rotations = [0, 2] +entities['steam-engine'].possible_rotations = [0, 2] +entities['steam-turbine'].possible_rotations = [0, 2] +entities['straight-rail'].possible_rotations = [0, 2] +entities['rail-signal'].possible_rotations = [0, 1, 2, 3, 4, 5, 6, 7] +entities['rail-chain-signal'].possible_rotations = [0, 1, 2, 3, 4, 5, 6, 7] +// End Possible Rotations + +// switch dir 2 and 6 for pipe-to-ground +let dir2 = Object.assign({}, entities['pipe-to-ground'].pictures['2']) +entities['pipe-to-ground'].pictures['2'] = entities['pipe-to-ground'].pictures['6'] +entities['pipe-to-ground'].pictures['6'] = dir2 +// shift.y-1 for dir 4 wall patch of gate +let wp4 = entities['gate'].wall_patch['4'].layers[0] +wp4.shift = [wp4.shift[0], wp4.shift[1] - 1] +if (wp4.hr_version) { + wp4.hr_version.shift = [wp4.hr_version.shift[0], wp4.hr_version.shift[1] - 1] +} +// fix shifts +entities['storage-tank'].pictures.window_background.shift = [0, 1] +entities['storage-tank'].pictures.window_background.hr_version.shift = [0, 1] + +add_to_shift([0, -0.6875], entities['artillery-turret'].base_picture.layers[0]) +add_to_shift([0, -0.6875], entities['artillery-turret'].cannon_barrel_pictures.layers[0]) +add_to_shift([0, -0.6875], entities['artillery-turret'].cannon_base_pictures.layers[0]) + +function add_to_shift(shift, tab) { + if (tab.shift) { + tab.shift = [shift[0] + tab.shift[0], shift[1] + tab.shift[1]] + } else { + tab.shift = shift + } + if (tab.hr_version) { + if (tab.hr_version.shift) { + tab.hr_version.shift = [shift[0] + tab.hr_version.shift[0], shift[1] + tab.hr_version.shift[1]] + } else { + tab.hr_version.shift = shift + } + } + return tab +} + +console.log('Entities: ' + Object.keys(entities).length) +fse.writeFileSync(outDir + 'entityBundle.json', JSON.stringify(entities, null, 2).replace(/"((__base__|__core__)\/.+?)"/g, function(match, capture) { + return '"entity:' + nameMapping(capture) + '"' +})) + +graphicsBundle() + +async function graphicsBundle() { + let paths = [] + let hrPaths = [] + let re = /"filename":\s*"([^.]+?\.png)"/g + let str = JSON.stringify(entities) + let match + + const excludeKeywords = [ + 'explosion', + 'cloud', + 'smoke', + 'fire', + 'muzzle-flash', + '-light\.padding', + 'steam\.png', + '-shadow\.png', + '-shadow-', + 'load-standup', + 'flamethrower-turret-gun(-[^e]|[^-])', + 'pump-[a-z]+?-liquid', + 'pump-[a-z]+?-glass', + 'accumulator-[a-z]+?-animation', + 'connector\/(hr-)?.-.-', + 'heated', + 'gun-turret-gun-[m12]', + 'roboport-recharging', + 'segment-visualisation', + 'graphics\/[^/]*$', + '-light\.png', + '-lights-color', + 'boiling-green', + 'power-switch-electricity', + 'electric-furnace-heater', + 'integration', + 'arrows', + 'hole', + 'rocket-over', + 'working', + 'hand-closed' + ] + const excludeKeywordsRegex = new RegExp(excludeKeywords.join('|'), 'g') + + while ((match = re.exec(str)) !== null) { + let path = match[1].replace(/__base__/g, 'base').replace(/__core__/g, 'core') + if (match[1].search(excludeKeywordsRegex) === -1) { + if (match[1].search(/\/hr-/g) === -1) { + if (!paths.includes(path)) { + paths.push(path) + } + } else { + if (!hrPaths.includes(path)) { + hrPaths.push(path) + } + } + } + } + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-barrel-1.png') + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-barrel-5.png') + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-barrel-9.png') + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-barrel-13.png') + + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-barrel-1.png') + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-barrel-5.png') + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-barrel-9.png') + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-barrel-13.png') + + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-base-1.png') + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-base-5.png') + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-base-9.png') + paths.push('base/graphics/entity/artillery-wagon/artillery-wagon-cannon-base-13.png') + + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-base-1.png') + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-base-5.png') + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-base-9.png') + hrPaths.push('base/graphics/entity/artillery-wagon/hr-artillery-wagon-cannon-base-13.png') + + console.log('Entity images: ' + paths.length) + console.log('Entity HR images: ' + hrPaths.length) + + let cropImages = [ + ['artillery-wagon-cannon', 4, 4], + ['flamethrower-turret-gun-extension', 5, 1], + ['gun-turret-gun-extension', 5, 1], + ['laser-turret-gun-start', 15, 1], + ['burner-mining-drill', 4, 8], + ['electric-mining-drill', 8, 8], + ['pumpjack-horsehead', 8, 5], + ['assembling-machine-[1-3]\.png', 8, 4], + ['centrifuge', 8, 8], + ['lab.png', 11, 3], + ['[^e]-pump-', 8, 4], + ['splitter', 8, 4], + ['radar', 8, 8], + ['steam-engine', 8, 4], + ['steam-turbine', 4, 2], + ['transport-belt', 16, 1], + ['laser-turret-gun', 8, 1], + ['beacon-antenna', 8, 4], + ['roboport-door-', 16, 1], + ['gate(-rail(-base)?)?-[a-z]+?(-(left|right))?\.png', 8, 2], + ['arm', 4, 3], + ['rail-signal\.png', 3, 1], + ['rail-chain-signal\.png', 4, 1], + ['power-switch', 2, 3] + ] + + let addedHrPaths = [] + let imagesToCrop = [] + for (let i = 0; i < paths.length; i++) { + let pArr = paths[i].split('/') + if (pArr[pArr.length - 1] === 'electric-furnace-base.png') { + pArr[pArr.length - 1] = 'electric-furnace.png' + } + pArr[pArr.length - 1] = 'hr-' + pArr[pArr.length - 1] + let hrVersion = pArr.join('/') + if (hrPaths.includes(hrVersion)) { + paths[i] = hrVersion + addedHrPaths.push(hrVersion) + } + paths[i] = factorioDirectory + paths[i] + // Crop spritesheet + for (let j = 0, len2 = cropImages.length; j < len2; j++) { + if (paths[i].search(new RegExp(cropImages[j][0], 'g')) !== -1) { + let p = './temp/' + nameMapping(paths[i]) + '.png' + imagesToCrop.push({ + path: paths[i], + outPath: p, + cropImgIndex: j + }) + paths[i] = p + break + } + } + } + + for (let i = 0; i < hrPaths.length; i++) { + if (!addedHrPaths.includes(hrPaths[i])) { + paths.push(factorioDirectory + hrPaths[i]) + } + } + + //Jison.write doesn't return a Promise + //https://github.com/oliver-moran/jimp/issues/90 + Jimp.prototype.writeAsync = util.promisify(Jimp.prototype.write) + + let res = Promise.all(imagesToCrop.map(data => Jimp.read(data.path).then(img => + img + .crop(0, 0, img.bitmap.width / cropImages[data.cropImgIndex][1], img.bitmap.height / cropImages[data.cropImgIndex][2]) + .writeAsync(data.outPath) + ))) + + res.then(() => { + console.log('Final entity images: ' + paths.length) + nsg({ + src: paths, + spritePath: spritesheetsOutDir + 'entitySpritesheet.png', + stylesheet: './json-entity.tpl', + stylesheetPath: spritesheetsOutDir + 'entitySpritesheet.json', + stylesheetOptions: { + prefix: 'entity:', + nameMapping: nameMapping + }, + compositor: 'jimp', + layout: 'packed', + layoutOptions: { + padding: 2 + } + }, function(err) { + if (err) { + console.log(err) + } else { + fse.remove('./temp') + console.log('Entity sprite atlas generated!') + } + }) + }) +} diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 00000000..81660d65 --- /dev/null +++ b/src/app.ts @@ -0,0 +1,289 @@ +// tslint:disable:no-import-side-effect +import 'normalize.css' + +import * as PIXI from 'pixi.js' +import keyboardJS from 'keyboardjs' + +import { Book } from './factorio-data/book' +import BPString from './factorio-data/BPString' +import sampleBP from './sample-blueprint' + +import util from './util' +import { InventoryContainer } from './containers/inventory' +import G from './globals' +import { EntityContainer } from './containers/entity' +import { PaintContainer } from './containers/paint' +import { BlueprintContainer } from './containers/blueprint' +import { ToolbarContainer } from './containers/toolbar' +import { isNumber } from 'util' +import { Blueprint } from './factorio-data/blueprint' +import { EditEntityContainer } from './containers/editEntity' +import { InfoContainer } from './containers/info' + +G.renderOnly = window.location.search.slice(1).split('&').includes('renderOnly') + +G.app = new PIXI.Application({ + autoStart: false, + antialias: true, + resolution: window.devicePixelRatio + // roundPixels: true +}) + +// https://github.com/pixijs/pixi.js/issues/3928 +G.app.renderer.plugins.interaction.moveWhenInside = true + +G.app.renderer.view.style.position = 'absolute' +G.app.renderer.view.style.display = 'none' +G.app.renderer.autoResize = true +G.app.renderer.resize(window.innerWidth, window.innerHeight) +window.addEventListener('resize', () => { + G.app.renderer.resize(window.innerWidth, window.innerHeight) + G.BPC.zoomPan.setViewPortSize(G.app.renderer.width, G.app.renderer.height) + G.BPC.zoomPan.updateTransform() + G.BPC.updateViewportCulling() +}, false) +document.body.appendChild(G.app.view) + +// PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST +// PIXI.settings.GC_MODE = PIXI.GC_MODES.MANUAL + +G.BPC = new BlueprintContainer() +G.app.stage.addChild(G.BPC) + +G.editEntityContainer = new EditEntityContainer() +G.app.stage.addChild(G.editEntityContainer) + +G.inventoryContainer = new InventoryContainer() +G.app.stage.addChild(G.inventoryContainer) + +G.toolbarContainer = new ToolbarContainer() +G.app.stage.addChild(G.toolbarContainer) + +const infoContainer = new InfoContainer() +G.app.stage.addChild(infoContainer) + +PIXI.loader +.add([ + { name: 'extra_iconSprites', url: 'spritesheets/extra_iconSpritesheet.json' }, + { name: 'iconSprites', url: 'spritesheets/iconSpritesheet.json' }, + { name: 'entitySprites', url: 'spritesheets/entitySpritesheet.json' } +]) +.load((_: any, resources: any) => { + G.app.renderer.plugins.prepare + .add(resources.extra_iconSprites.spritesheet.baseTexture) + .add(resources.iconSprites.spritesheet.baseTexture) + .add(resources.entitySprites.spritesheet.baseTexture) + .upload(setup) +}) + +function setup() { + let initialSource: string + for (const a of window.location.search.slice(1).split('&')) { + if (a.includes('source')) { + initialSource = a.split('=')[1] + break + } + } + loadBpFromSource(initialSource ? initialSource : sampleBP).then(() => { + + if (!G.bp) G.bp = new Blueprint() + G.BPC.centerViewport() + G.BPC.updateCursorPosition({ + x: G.app.renderer.width / 2, + y: G.app.renderer.height / 2 + }) + + G.app.start() + G.app.renderer.view.style.display = 'block' + }) +} + +function loadBpFromSource(source: string) { + return util.findBPString(source).then(loadBp).catch(error => { + console.error(error) + }) + + function loadBp(bpString: string) { + const res = BPString.decode(bpString) + // TODO: Handle decode errors + if ((res as {error: any}).error) throw (res as {error: any}).error + G.bp = res instanceof Book ? res.getBlueprint() : res + + G.BPC.clearData() + G.BPC.initBP() + console.log('Loaded BP String') + } +} + +window.addEventListener('copy', e => { + e.preventDefault() + + e.clipboardData.setData('text/plain', BPString.encode(G.bp)) + + console.log('Copied BP String') +}) + +window.addEventListener('paste', e => { + e.preventDefault() + + G.app.renderer.view.style.display = 'none' + loadBpFromSource(e.clipboardData.getData('text')).then(() => G.app.renderer.view.style.display = 'block') +}) + +keyboardJS.bind('shift + n', () => { + G.BPC.clearData() + G.bp = new Blueprint() + G.BPC.initBP() +}) + +keyboardJS.bind('modifier + s', e => { + e.preventDefault() + + G.BPC.centerViewport() + if (G.renderOnly) G.BPC.cacheAsBitmap = false + const t = G.app.renderer.generateTexture(G.BPC) + if (G.renderOnly) G.BPC.cacheAsBitmap = true + t.frame = G.BPC.entitySprites.getLocalBounds() + t._updateUvs() + const s = new PIXI.Sprite(t) + const image = G.app.renderer.plugins.extract.image(s) + const w = window.open() + w.focus() + w.document.write(image.outerHTML) + + console.log('Saved BP Image') +}) + +keyboardJS.bind('shift', () => G.keyboard.shift = true, () => G.keyboard.shift = false) + +keyboardJS.bind('alt', e => { + e.preventDefault() + G.BPC.overlayContainer.overlay.visible = !G.BPC.overlayContainer.overlay.visible +}) + +keyboardJS.bind('i', () => infoContainer.toggle()) + +keyboardJS.bind('esc', () => { if (G.openedGUIWindow) G.openedGUIWindow.close() }) + +keyboardJS.bind('e', () => { + if (G.currentMouseState !== G.mouseStates.MOVING && G.currentMouseState !== G.mouseStates.PAINTING && !G.renderOnly) { + if (G.openedGUIWindow) { + G.openedGUIWindow.close() + } else { + G.inventoryContainer.toggle() + } + } +}) + +keyboardJS.bind('f', () => G.BPC.centerViewport()) + +keyboardJS.bind('r', () => { + if (G.BPC.hoverContainer && + (G.currentMouseState === G.mouseStates.NONE || G.currentMouseState === G.mouseStates.MOVING) + ) { + G.BPC.hoverContainer.rotate() + } else if (G.currentMouseState === G.mouseStates.PAINTING) { + G.BPC.paintContainer.rotate() + } +}) + +keyboardJS.bind('q', () => { + if (G.BPC.hoverContainer && G.currentMouseState === G.mouseStates.NONE) { + G.currentMouseState = G.mouseStates.PAINTING + + const hoverContainer = G.BPC.hoverContainer + G.BPC.hoverContainer.pointerOutEventHandler() + const entity = G.bp.entity(hoverContainer.entity_number) + G.BPC.paintContainer = new PaintContainer(entity.name, + entity.directionType === 'output' ? (entity.direction + 4) % 8 : entity.direction, + hoverContainer.position) + G.BPC.paintContainer.moveTo({ + x: G.gridCoordsOfCursor.x * 32, + y: G.gridCoordsOfCursor.y * 32 + }) + G.BPC.addChild(G.BPC.paintContainer) + } else if (G.currentMouseState === G.mouseStates.PAINTING) { + G.BPC.paintContainer.destroy() + G.BPC.paintContainer = undefined + + G.currentMouseState = G.mouseStates.NONE + } +}) + +keyboardJS.bind('modifier + z', () => { + G.bp.undo( + hist => pre(hist, 'add'), + hist => post(hist, 'del') + ) +}) + +keyboardJS.bind('modifier + y', () => { + G.bp.redo( + hist => pre(hist, 'del'), + hist => post(hist, 'add') + ) +}) + +function pre(hist: any, addDel: string) { + switch (hist.type) { + case 'mov': + case addDel: + const e = EntityContainer.mappings.get(hist.entity_number) + e.redrawSurroundingEntities() + if (hist.type === addDel) { + G.BPC.wiresContainer.remove(hist.entity_number) + e.destroy() + } + if (hist.type === 'mov') G.BPC.wiresContainer.update(hist.entity_number) + } +} + +function post(hist: any, addDel: string) { + function redrawEntityAndSurroundingEntities(entnr: number) { + const e = EntityContainer.mappings.get(entnr) + e.redraw() + e.redrawSurroundingEntities() + } + switch (hist.type) { + case 'mov': + redrawEntityAndSurroundingEntities(hist.entity_number) + const entity = G.bp.entity(hist.entity_number) + const e = EntityContainer.mappings.get(hist.entity_number) + e.position.set( + entity.position.x * 32, + entity.position.y * 32 + ) + e.updateVisualStuff() + break + case 'upd': + if (isNumber(hist.entity_number)) { + const e = EntityContainer.mappings.get(hist.entity_number) + e.redrawEntityInfo() + redrawEntityAndSurroundingEntities(hist.entity_number) + G.BPC.wiresContainer.update(hist.entity_number) + if (G.editEntityContainer.visible) { + if (G.inventoryContainer.visible) G.inventoryContainer.close() + G.editEntityContainer.create(hist.entity_number) + } + } else { + for (const entnr of hist.entity_number) { + redrawEntityAndSurroundingEntities(entnr) + } + } + break + case addDel: + const ec = new EntityContainer(hist.entity_number) + G.BPC.entities.addChild(ec) + ec.redrawSurroundingEntities() + G.BPC.wiresContainer.update(hist.entity_number) + } + + console.log(`${addDel === 'del' ? 'Undo' : 'Redo'} ${hist.entity_number} ${hist.annotation}`) + G.BPC.updateOverlay() + G.BPC.updateViewportCulling() +} + +keyboardJS.bind('w', () => G.keyboard.w = true, () => G.keyboard.w = false) +keyboardJS.bind('a', () => G.keyboard.a = true, () => G.keyboard.a = false) +keyboardJS.bind('s', () => G.keyboard.s = true, () => G.keyboard.s = false) +keyboardJS.bind('d', () => G.keyboard.d = true, () => G.keyboard.d = false) diff --git a/src/blueprintSchema.json b/src/blueprintSchema.json new file mode 100644 index 00000000..67ccb5a2 --- /dev/null +++ b/src/blueprintSchema.json @@ -0,0 +1,475 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "blueprintSchema.json", + "type": "object", + "oneOf": [ + { + "required": [ "blueprint" ], + "additionalProperties": false, + "properties": { + "blueprint": { "$ref": "blueprintSchema.json#/definitions/blueprint" } + } + }, + { + "required": [ "blueprint_book" ], + "additionalProperties": false, + "properties": { + "blueprint_book": { + "type": "object", + "required": ["version", "item", "active_index", "blueprints"], + "additionalProperties": false, + "properties": { + "version": { "type": "integer" }, + "item": { + "type": "string", + "const": "blueprint-book" + }, + "label": { "type": "string" }, + "active_index": { "type": "integer" }, + "blueprints": { + "type": "array", + "minItems": 1, + "maxITems": 1000, + "items": { + "type": "object", + "required": ["index", "blueprint"], + "additionalProperties": false, + "properties": { + "index": { "type": "integer" }, + "blueprint": { "$ref": "blueprintSchema.json#/definitions/blueprint" } + } + } + } + } + } + } + } + ], + "definitions": { + "position": { + "type": "object", + "required": ["x", "y"], + "additionalProperties": false, + "properties": { + "x": { "type": "number" }, + "y": { "type": "number" } + } + }, + "signal": { + "type": "object", + "required": ["name", "type"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "itemName": true + }, + "type": { + "type": "string", + "enum": ["item", "virtual", "fluid"] + } + } + }, + "wireColor": { + "type": "array", + "items": { + "type": "object", + "required": ["entity_id"], + "additionalProperties": false, + "properties": { + "entity_id": { "type": "integer" }, + "circuit_id": { "type": "integer" } + } + } + }, + "side": { + "type": "object", + "additionalProperties": false, + "properties": { + "red": { "$ref": "blueprintSchema.json#/definitions/wireColor" }, + "green": { "$ref": "blueprintSchema.json#/definitions/wireColor" } + } + }, + "blueprint": { + "type": "object", + "required": ["version", "item", "icons"], + "additionalProperties": false, + "properties": { + "version": { "type": "integer" }, + "item": { + "type": "string", + "const": "blueprint" + }, + "label": { "type": "string" }, + "icons": { + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "type": "object", + "required": ["index", "signal"], + "additionalProperties": false, + "properties": { + "index": { + "type": "integer", + "enum": [1, 2, 3, 4] + }, + "signal": { "$ref": "blueprintSchema.json#/definitions/signal" } + } + } + }, + "entities": { + "type": "array", + "items": { + "type": "object", + "required": ["entity_number", "name", "position"], + "additionalProperties": false, + "properties": { + "entity_number": { "type": "integer" }, + "name": { + "type": "string", + "entityName": true + }, + "position": { "$ref": "blueprintSchema.json#/definitions/position" }, + "direction": { + "type": "integer", + "enum": [0, 1, 2, 3, 4, 5, 6, 7], + "$comment": "direction, can be ommited if 0" + }, + "type": { + "type": "string", + "enum": ["input", "output"], + "$comment": "direction type, only present if entity is of type underground-belt" + }, + "recipe": { + "type": "string", + "recipeName": true, + "$comment": "recipe name, only present if entity is of type assembling-machine or has fixed_recipe" + }, + "bar": { + "type": "integer", + "$comment": "inventory size limitation, only present if entity has inventory_size" + }, + "items": { + "type": "object", + "objectWithItemNames": true, + "$comment": "object, keys are module names and value nr of modules, only present if entity has module_specification" + }, + + "input_priority": { + "type": "string", + "enum": ["left", "right"], + "$comment": "splitter input priority, only present if entity is of type splitter" + }, + "output_priority": { + "type": "string", + "enum": ["left", "right"], + "$comment": "splitter output priority, only present if entity is of type splitter" + }, + "filter": { + "type": "string", + "itemName": true, + "$comment": "splitter filter for output priority, only present if entity is of type splitter" + }, + + "station": { + "type": "string", + "$comment": "train stop station name, only present if entity is train-stop" + }, + "color": { + "type": "object", + "required": ["r", "g", "b", "a"], + "additionalProperties": false, + "$comment": "train stop color, only present if entity is train-stop", + "properties": { + "r": { "type": "number" }, + "g": { "type": "number" }, + "b": { "type": "number" }, + "a": { "type": "number" } + } + }, + + "auto_launch": { + "type": "boolean", + "$comment": "auto launch, only present if entity is rocket-silo" + }, + "override_stack_size": { + "type": "integer", + "$comment": "override stack size, only present if entity is of type inserter" + }, + "request_from_buffers": { + "type": "boolean", + "$comment": "only present if entity is logistic-chest-requester" + }, + "filters": { + "type": "array", + "$comment": "only present if entity is filter-inserter or stack-filter-inserter", + "items": { + "type": "object", + "required": ["index", "name"], + "additionalProperties": false, + "properties": { + "index": { "type": "integer" }, + "name": { + "type": "string", + "itemName": true + } + } + } + }, + "request_filters": { + "type": "array", + "$comment": "only present if entity is logistic-chest-storage, logistic-chest-buffer or logistic-chest-requester", + "items": { + "type": "object", + "required": ["index", "name", "count"], + "additionalProperties": false, + "properties": { + "index": { "type": "integer" }, + "name": { + "type": "string", + "itemName": true + }, + "count": { "type": "integer" } + } + } + }, + + "alert_parameters": { + "type": "object", + "$comment": "only present if entity is programmable-speaker", + "additionalProperties": false, + "properties": { + "alert_message": { "type": "string" }, + "icon_signal_id": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "show_alert": { "type": "boolean" }, + "show_on_map": { "type": "boolean" } + } + }, + "parameters": { + "type": "object", + "$comment": "only present if entity is programmable-speaker", + "additionalProperties": false, + "properties": { + "playback_volume": { "type": "number" }, + "playback_globally": { "type": "boolean" }, + "allow_polyphony": { "type": "boolean" } + } + }, + + "connections": { + "type": "object", + "$comment": "wire connections", + "additionalProperties": false, + "properties": { + "1": { "$ref": "blueprintSchema.json#/definitions/side" }, + "2": { "$ref": "blueprintSchema.json#/definitions/side" } + } + }, + "control_behavior": { + "type": "object", + "additionalProperties": false, + "properties": { + "is_on": { + "type": "boolean", + "enum": [false], + "$comment": "only present if entity is constant-combinator" + }, + "filters": { + "type": "array", + "$comment": "only present if entity is constant-combinator", + "items": { + "type": "object", + "required": ["index", "count", "signal"], + "additionalProperties": false, + "properties": { + "index": { "type": "integer" }, + "count": { "type": "integer" }, + "signal": { "$ref": "blueprintSchema.json#/definitions/signal" } + } + } + }, + + "use_colors": { + "type": "boolean", + "enum": [true], + "$comment": "only present if entity is small-lamp" + }, + "circuit_enable_disable": { + "type": "boolean", + "$comment": "only present if entity is of type mining-drill or transport-belt or train-stop" + }, + + "circuit_read_hand_contents": { + "type": "boolean", + "$comment": "only present if entity is of type inserter or transport-belt" + }, + "circuit_hand_read_mode": { + "type": "integer", + "enum": [1], + "$comment": "0 = pulse, 1 = hold, only present if entity is of type inserter and circuit_read_hand_contents is true" + }, + "circuit_set_stack_size": { + "type": "boolean", + "enum": [true], + "$comment": "only present if entity is of type inserter and override_stack_size is not set" + }, + "stack_control_input_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "circuit_contents_read_mode": { + "type": "integer", + "enum": [0, 1], + "$comment": "0 = pulse, 1 = hold, only present if entity is of type transport-belt and circuit_read_hand_contents is true" + }, + + "circuit_mode_of_operation": { + "type": "integer", + "$comment": "only present if entity is roboport or logistic-chest-buffer or logistic-chest-requester or of type inserter(3)????????????????" + }, + + "available_logistic_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "total_logistic_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "available_construction_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "total_construction_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + + "circuit_read_resources": { + "type": "boolean", + "$comment": "only present if entity is of type mining-drill" + }, + "circuit_resource_read_mode": { + "type": "integer", + "enum": [0,1], + "$comment": "only present if entity is burner-mining-drill or electric-mining-drill and circuit_read_resources is true" + }, + + "circuit_open_gate": { + "type": "boolean", + "$comment": "only present if entity is stone-wall" + }, + "circuit_read_sensor": { + "type": "boolean", + "$comment": "only present if entity is stone-wall" + }, + + "send_to_train": { + "type": "boolean", + "enum": [false], + "$comment": "only present if entity is train-stop" + }, + "read_from_train": { + "type": "boolean", + "enum": [true], + "$comment": "only present if entity is train-stop" + }, + "read_stopped_train": { + "type": "boolean", + "enum": [true], + "$comment": "only present if entity is train-stop" + }, + "train_stopped_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + + "circuit_close_signal": { + "type": "boolean", + "$comment": "only present if entity is rail-signal" + }, + "circuit_read_signal": { + "type": "boolean", + "$comment": "only present if entity is rail-signal, for chain signals: you have the same signals" + }, + "red_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "orange_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "green_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "blue_output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + + "output_signal": { + "$comment": "only present if entity is stone-wall or accumulator", + "$ref": "blueprintSchema.json#/definitions/signal" + }, + + "circuit_parameters": { + "type": "object", + "$comment": "only present if entity is programmable-speaker", + "additionalProperties": false, + "properties": { + "instrument_id": { "type": "integer" }, + "note_id": { "type": "integer" }, + "signal_value_is_pitch": { "type": "boolean" } + } + }, + "decider_conditions": { + "type": "object", + "$comment": "only present if entity is decider-combinator", + "additionalProperties": false, + "properties": { + "comparator": { "type": "string" }, + "constant": { "type": "integer" }, + "copy_count_from_input": { "type": "boolean" }, + "first_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "second_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" } + } + }, + "arithmetic_conditions": { + "type": "object", + "$comment": "only present if entity is arithmetic-combinator", + "additionalProperties": false, + "properties": { + "operation": { "type": "string" }, + "constant": { "type": "integer" }, + "first_constant": { "type": "integer" }, + "second_constant": { "type": "integer" }, + "first_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "second_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "output_signal": { "$ref": "blueprintSchema.json#/definitions/signal" } + } + }, + "circuit_condition": { + "type": "object", + "$comment": "only present if entity is pump, offshore-pump, rail-signal, train-stop, small-lamp, power-switch, stone-wall, programmable-speaker or of type: inserter, transport-belt or mining-drill", + "additionalProperties": false, + "properties": { + "comparator": { "type": "string" }, + "constant": { "type": "integer" }, + "first_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "second_signal": { "$ref": "blueprintSchema.json#/definitions/signal" } + } + }, + "connect_to_logistic_network": { + "type": "boolean", + "enum": [true], + "$comment": "only present if entity is pump, offshore-pump, train-stop, small-lamp, power-switch or of type: inserter, transport-belt or mining-drill" + }, + "logistic_condition": { + "type": "object", + "$comment": "only present if entity is pump, offshore-pump, train-stop, small-lamp, power-switch or of type: inserter, transport-belt or mining-drill", + "additionalProperties": false, + "properties": { + "comparator": { "type": "string" }, + "constant": { "type": "integer" }, + "first_signal": { "$ref": "blueprintSchema.json#/definitions/signal" }, + "second_signal": { "$ref": "blueprintSchema.json#/definitions/signal" } + } + } + } + } + } + } + }, + "tiles": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "position"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "tileName": false + }, + "position": { "$ref": "blueprintSchema.json#/definitions/position" } + } + } + } + } + } + } +} diff --git a/src/bundles/entityBundle.json b/src/bundles/entityBundle.json new file mode 100644 index 00000000..ffa6fe41 --- /dev/null +++ b/src/bundles/entityBundle.json @@ -0,0 +1,62266 @@ +{ + "stone-furnace": { + "type": "furnace", + "name": "stone-furnace", + "icon": "entity:icons/stone-furnace", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "stone-furnace" + }, + "max_health": 200, + "corpse": "medium-remnants", + "repair_sound": { + "filename": "entity:sound/manual-repair-simple" + }, + "mined_sound": { + "filename": "entity:sound/deconstruct-bricks" + }, + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-stone-impact", + "volume": 1 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/furnace" + } + }, + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "explosion", + "percent": 30 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -0.8, + -1 + ], + [ + 0.8, + 1 + ] + ], + "crafting_categories": [ + "smelting" + ], + "result_inventory_size": 1, + "energy_usage": "180kW", + "crafting_speed": 1, + "source_inventory_size": 1, + "energy_source": { + "type": "burner", + "fuel_category": "chemical", + "effectivity": 1, + "fuel_inventory_size": 1, + "emissions": 0.01, + "smoke": [ + { + "name": "smoke", + "deviation": [ + 0.1, + 0.1 + ], + "frequency": 5, + "position": [ + 0, + -0.8 + ], + "starting_vertical_speed": 0.08, + "starting_frame_deviation": 60 + } + ] + }, + "animation": { + "layers": [ + { + "filename": "entity:stone-furnace/stone-furnace", + "priority": "extra-high", + "width": 81, + "height": 64, + "frame_count": 1, + "shift": [ + 0.515625, + 0.0625 + ], + "hr_version": { + "filename": "entity:stone-furnace/hr-stone-furnace", + "priority": "extra-high", + "width": 151, + "height": 146, + "frame_count": 1, + "shift": [ + -0.0078125, + 0.1875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:stone-furnace/stone-furnace-shadow", + "priority": "extra-high", + "width": 81, + "height": 64, + "frame_count": 1, + "draw_as_shadow": true, + "shift": [ + 0.515625, + 0.0625 + ], + "hr_version": { + "filename": "entity:stone-furnace/hr-stone-furnace-shadow", + "priority": "extra-high", + "width": 164, + "height": 74, + "frame_count": 1, + "draw_as_shadow": true, + "shift": [ + 0.453125, + 0.40625 + ], + "scale": 0.5 + } + } + ] + }, + "working_visualisations": [ + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "animation": { + "filename": "entity:stone-furnace/stone-furnace-fire", + "priority": "extra-high", + "line_length": 8, + "width": 20, + "height": 49, + "frame_count": 48, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.0625, + 0.171875 + ], + "hr_version": { + "filename": "entity:stone-furnace/hr-stone-furnace-fire", + "priority": "extra-high", + "line_length": 8, + "width": 41, + "height": 100, + "frame_count": 48, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.0234375, + 0.171875 + ], + "scale": 0.5 + } + }, + "light": { + "intensity": 1, + "size": 1, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + } + } + ], + "fast_replaceable_group": "furnace", + "size": { + "width": 2, + "height": 2 + } + }, + "steel-furnace": { + "type": "furnace", + "name": "steel-furnace", + "icon": "entity:icons/steel-furnace", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "steel-furnace" + }, + "max_health": 300, + "corpse": "medium-remnants", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/furnace" + } + }, + "resistances": [ + { + "type": "fire", + "percent": 100 + } + ], + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -0.8, + -1 + ], + [ + 0.8, + 1 + ] + ], + "crafting_categories": [ + "smelting" + ], + "result_inventory_size": 1, + "energy_usage": "180kW", + "crafting_speed": 2, + "source_inventory_size": 1, + "energy_source": { + "type": "burner", + "fuel_category": "chemical", + "effectivity": 1, + "emissions": 0.02, + "fuel_inventory_size": 1, + "smoke": [ + { + "name": "smoke", + "frequency": 10, + "position": [ + 0.7, + -1.2 + ], + "starting_vertical_speed": 0.08, + "starting_frame_deviation": 60 + } + ] + }, + "animation": { + "layers": [ + { + "filename": "entity:steel-furnace/steel-furnace", + "priority": "high", + "width": 85, + "height": 87, + "frame_count": 1, + "shift": [ + -0.046875, + 0.046875 + ], + "hr_version": { + "filename": "entity:steel-furnace/hr-steel-furnace", + "priority": "high", + "width": 171, + "height": 174, + "frame_count": 1, + "shift": [ + -0.0390625, + 0.0625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:steel-furnace/steel-furnace-shadow", + "priority": "high", + "width": 139, + "height": 43, + "frame_count": 1, + "draw_as_shadow": true, + "shift": [ + 1.234375, + 0.359375 + ], + "hr_version": { + "filename": "entity:steel-furnace/hr-steel-furnace-shadow", + "priority": "high", + "width": 277, + "height": 85, + "frame_count": 1, + "draw_as_shadow": true, + "shift": [ + 1.2265625, + 0.3515625 + ], + "scale": 0.5 + } + } + ] + }, + "working_visualisations": [ + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "animation": { + "filename": "entity:steel-furnace/steel-furnace-fire", + "priority": "high", + "line_length": 8, + "width": 29, + "height": 40, + "frame_count": 48, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.015625, + 0.1875 + ], + "hr_version": { + "filename": "entity:steel-furnace/hr-steel-furnace-fire", + "priority": "high", + "line_length": 8, + "width": 57, + "height": 81, + "frame_count": 48, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.0234375, + 0.1796875 + ], + "scale": 0.5 + } + }, + "light": { + "intensity": 1, + "size": 1, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + } + }, + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "effect": "flicker", + "animation": { + "filename": "entity:steel-furnace/steel-furnace-glow", + "priority": "high", + "width": 60, + "height": 43, + "frame_count": 1, + "shift": [ + 0.03125, + 0.640625 + ], + "blend_mode": "additive" + } + }, + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "effect": "flicker", + "animation": { + "filename": "entity:steel-furnace/steel-furnace-working", + "priority": "high", + "line_length": 8, + "width": 64, + "height": 75, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0, + -0.140625 + ], + "blend_mode": "additive", + "hr_version": { + "filename": "entity:steel-furnace/hr-steel-furnace-working", + "priority": "high", + "line_length": 8, + "width": 130, + "height": 149, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0, + -0.1328125 + ], + "blend_mode": "additive", + "scale": 0.5 + } + } + } + ], + "fast_replaceable_group": "furnace", + "size": { + "width": 2, + "height": 2 + } + }, + "electric-furnace": { + "type": "furnace", + "name": "electric-furnace", + "icon": "entity:icons/electric-furnace", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "electric-furnace" + }, + "max_health": 350, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "resistances": [ + { + "type": "fire", + "percent": 80 + } + ], + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "module_specification": { + "module_slots": 2, + "module_info_icon_shift": [ + 0, + 0.8 + ] + }, + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "crafting_categories": [ + "smelting" + ], + "result_inventory_size": 1, + "crafting_speed": 2, + "energy_usage": "180kW", + "source_inventory_size": 1, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.005 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/electric-furnace", + "volume": 0.7 + }, + "apparent_volume": 1.5 + }, + "animation": { + "layers": [ + { + "filename": "entity:electric-furnace/electric-furnace-base", + "priority": "high", + "width": 129, + "height": 100, + "frame_count": 1, + "shift": [ + 0.421875, + 0 + ], + "hr_version": { + "filename": "entity:electric-furnace/hr-electric-furnace", + "priority": "high", + "width": 239, + "height": 219, + "frame_count": 1, + "shift": [ + 0.0234375, + 0.1796875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:electric-furnace/electric-furnace-shadow", + "priority": "high", + "width": 129, + "height": 100, + "frame_count": 1, + "shift": [ + 0.421875, + 0 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:electric-furnace/hr-electric-furnace-shadow", + "priority": "high", + "width": 227, + "height": 171, + "frame_count": 1, + "draw_as_shadow": true, + "shift": [ + 0.3515625, + 0.2421875 + ], + "scale": 0.5 + } + } + ] + }, + "working_visualisations": [ + { + "animation": { + "filename": "entity:electric-furnace/electric-furnace-heater", + "priority": "high", + "width": 25, + "height": 15, + "frame_count": 12, + "animation_speed": 0.5, + "shift": [ + 0.015625, + 0.890625 + ], + "hr_version": { + "filename": "entity:electric-furnace/hr-electric-furnace-heater", + "priority": "high", + "width": 60, + "height": 56, + "frame_count": 12, + "animation_speed": 0.5, + "shift": [ + 0.0546875, + 1.0234375 + ], + "scale": 0.5 + } + }, + "light": { + "intensity": 0.4, + "size": 6, + "shift": [ + 0, + 1 + ], + "color": { + "r": 1, + "g": 1, + "b": 1 + } + } + }, + { + "animation": { + "filename": "entity:electric-furnace/electric-furnace-propeller-1", + "priority": "high", + "width": 19, + "height": 13, + "frame_count": 4, + "animation_speed": 0.5, + "shift": [ + -0.671875, + -0.640625 + ], + "hr_version": { + "filename": "entity:electric-furnace/hr-electric-furnace-propeller-1", + "priority": "high", + "width": 37, + "height": 25, + "frame_count": 4, + "animation_speed": 0.5, + "shift": [ + -0.640625, + -0.578125 + ], + "scale": 0.5 + } + } + }, + { + "animation": { + "filename": "entity:electric-furnace/electric-furnace-propeller-2", + "priority": "high", + "width": 12, + "height": 9, + "frame_count": 4, + "animation_speed": 0.5, + "shift": [ + 0.0625, + -1.234375 + ], + "hr_version": { + "filename": "entity:electric-furnace/hr-electric-furnace-propeller-2", + "priority": "high", + "width": 23, + "height": 15, + "frame_count": 4, + "animation_speed": 0.5, + "shift": [ + 0.109375, + -1.1875 + ], + "scale": 0.5 + } + } + } + ], + "fast_replaceable_group": "furnace", + "size": { + "width": 3, + "height": 3 + } + }, + "transport-belt": { + "type": "transport-belt", + "name": "transport-belt", + "icon": "entity:icons/transport-belt", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.3, + "result": "transport-belt" + }, + "max_health": 150, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "working_sound": { + "sound": { + "filename": "entity:sound/transport-belt", + "volume": 0.4 + }, + "max_sounds_per_type": 3 + }, + "animation_speed_coefficient": 32, + "animations": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "direction_count": 12, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "scale": 0.5, + "frame_count": 16, + "direction_count": 12 + } + }, + "belt_horizontal": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "scale": 0.5, + "frame_count": 16 + } + }, + "belt_vertical": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 40, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "scale": 0.5, + "y": 80 + } + }, + "ending_top": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 80, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 120, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 240, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 160, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 320, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 200, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 400, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 240, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 480, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 280, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 560, + "scale": 0.5 + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "fast_replaceable_group": "transport-belt", + "speed": 0.03125, + "connector_frame_sprites": { + "frame_main": { + "sheet": { + "filename": "entity:connector/hr-ccm-belt-04a-sequence", + "frame_count": 4, + "height": 90, + "line_length": 4, + "priority": "low", + "scale": 0.5, + "shift": [ + 0.09375, + -0.1875 + ], + "variation_count": 7, + "width": 80 + } + }, + "frame_shadow": { + "sheet": { + "draw_as_shadow": true, + "filename": "entity:connector/hr-ccm-belt-04b-sequence-shadow", + "frame_count": 4, + "height": 74, + "line_length": 4, + "priority": "low", + "scale": 0.5, + "shift": [ + 0.390625, + -0.015625 + ], + "variation_count": 7, + "width": 116 + } + }, + "frame_main_scanner": { + "filename": "entity:connector/hr-CCM-BELT-SPRITES-SCANNER", + "frame_count": 8, + "height": 64, + "line_length": 8, + "priority": "low", + "scale": 0.5, + "shift": [ + 0, + 0.015625 + ], + "width": 22 + }, + "frame_main_scanner_movement_speed": 0.032258064516129, + "frame_main_scanner_horizontal_start_shift": [ + -0.25, + -0.09375 + ], + "frame_main_scanner_horizontal_end_shift": [ + 0.25, + -0.09375 + ], + "frame_main_scanner_horizontal_y_scale": 0.7, + "frame_main_scanner_horizontal_rotation": 0, + "frame_main_scanner_vertical_start_shift": [ + 0, + -0.3125 + ], + "frame_main_scanner_vertical_end_shift": [ + 0, + 0.1875 + ], + "frame_main_scanner_vertical_y_scale": 0.75, + "frame_main_scanner_vertical_rotation": 0.25, + "frame_main_scanner_cross_horizontal_start_shift": [ + -0.3125, + -0.0625 + ], + "frame_main_scanner_cross_horizontal_end_shift": [ + 0.3125, + -0.0625 + ], + "frame_main_scanner_cross_horizontal_y_scale": 0.6, + "frame_main_scanner_cross_horizontal_rotation": 0, + "frame_main_scanner_cross_vertical_start_shift": [ + 0, + -0.3125 + ], + "frame_main_scanner_cross_vertical_end_shift": [ + 0, + 0.1875 + ], + "frame_main_scanner_cross_vertical_y_scale": 0.75, + "frame_main_scanner_cross_vertical_rotation": 0.25, + "frame_main_scanner_nw_ne": { + "filename": "entity:connector/transport-belt-connector-frame-main-scanner-nw-ne", + "priority": "low", + "blend_mode": "additive", + "line_length": 8, + "width": 28, + "height": 24, + "frame_count": 32, + "shift": [ + -0.03125, + -0.0625 + ] + }, + "frame_main_scanner_sw_se": { + "filename": "entity:connector/transport-belt-connector-frame-main-scanner-sw-se", + "priority": "low", + "blend_mode": "additive", + "line_length": 8, + "width": 29, + "height": 28, + "frame_count": 32, + "shift": [ + 0.015625, + -0.09375 + ] + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 264, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 108, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 156, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + -0.4375 + ], + "red_green_led_light_offset": [ + 0.046875, + 0.171875 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 220, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 90, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 130, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.328125, + 0.140625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 176, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 72, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 104, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.3125, + -0.640625 + ], + "red_green_led_light_offset": [ + 0.3125, + 0.140625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 132, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 54, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 78, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.34375 + ], + "red_green_led_light_offset": [ + 0.28125, + 0.15625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 88, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 36, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 52, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.34375, + 0.15625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 44, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 18, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 26, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.25, + -0.625 + ], + "red_green_led_light_offset": [ + 0.28125, + 0.171875 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.3125, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "fast-transport-belt": { + "type": "transport-belt", + "name": "fast-transport-belt", + "icon": "entity:icons/fast-transport-belt", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.3, + "result": "fast-transport-belt" + }, + "max_health": 160, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 50 + } + ], + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "working_sound": { + "sound": { + "filename": "entity:sound/fast-transport-belt", + "volume": 0.4 + }, + "max_sounds_per_type": 3 + }, + "animation_speed_coefficient": 32, + "animations": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "direction_count": 12, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "direction_count": 12, + "scale": 0.5 + } + }, + "belt_horizontal": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "scale": 0.5 + } + }, + "belt_vertical": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 40, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_top": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 80, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 320, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 120, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 480, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 160, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 640, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 200, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 800, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 240, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 960, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 280, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 1120, + "scale": 0.5 + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "fast_replaceable_group": "transport-belt", + "speed": 0.0625, + "connector_frame_sprites": { + "frame_main": { + "sheet": { + "filename": "entity:connector/hr-ccm-belt-04a-sequence", + "frame_count": 4, + "height": 90, + "line_length": 4, + "priority": "low", + "scale": 0.5, + "shift": [ + 0.09375, + -0.1875 + ], + "variation_count": 7, + "width": 80 + } + }, + "frame_shadow": { + "sheet": { + "draw_as_shadow": true, + "filename": "entity:connector/hr-ccm-belt-04b-sequence-shadow", + "frame_count": 4, + "height": 74, + "line_length": 4, + "priority": "low", + "scale": 0.5, + "shift": [ + 0.390625, + -0.015625 + ], + "variation_count": 7, + "width": 116 + } + }, + "frame_main_scanner": { + "filename": "entity:connector/hr-CCM-BELT-SPRITES-SCANNER", + "frame_count": 8, + "height": 64, + "line_length": 8, + "priority": "low", + "scale": 0.5, + "shift": [ + 0, + 0.015625 + ], + "width": 22 + }, + "frame_main_scanner_movement_speed": 0.032258064516129, + "frame_main_scanner_horizontal_start_shift": [ + -0.25, + -0.09375 + ], + "frame_main_scanner_horizontal_end_shift": [ + 0.25, + -0.09375 + ], + "frame_main_scanner_horizontal_y_scale": 0.7, + "frame_main_scanner_horizontal_rotation": 0, + "frame_main_scanner_vertical_start_shift": [ + 0, + -0.3125 + ], + "frame_main_scanner_vertical_end_shift": [ + 0, + 0.1875 + ], + "frame_main_scanner_vertical_y_scale": 0.75, + "frame_main_scanner_vertical_rotation": 0.25, + "frame_main_scanner_cross_horizontal_start_shift": [ + -0.3125, + -0.0625 + ], + "frame_main_scanner_cross_horizontal_end_shift": [ + 0.3125, + -0.0625 + ], + "frame_main_scanner_cross_horizontal_y_scale": 0.6, + "frame_main_scanner_cross_horizontal_rotation": 0, + "frame_main_scanner_cross_vertical_start_shift": [ + 0, + -0.3125 + ], + "frame_main_scanner_cross_vertical_end_shift": [ + 0, + 0.1875 + ], + "frame_main_scanner_cross_vertical_y_scale": 0.75, + "frame_main_scanner_cross_vertical_rotation": 0.25, + "frame_main_scanner_nw_ne": { + "filename": "entity:connector/transport-belt-connector-frame-main-scanner-nw-ne", + "priority": "low", + "blend_mode": "additive", + "line_length": 8, + "width": 28, + "height": 24, + "frame_count": 32, + "shift": [ + -0.03125, + -0.0625 + ] + }, + "frame_main_scanner_sw_se": { + "filename": "entity:connector/transport-belt-connector-frame-main-scanner-sw-se", + "priority": "low", + "blend_mode": "additive", + "line_length": 8, + "width": 29, + "height": 28, + "frame_count": 32, + "shift": [ + 0.015625, + -0.09375 + ] + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 264, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 108, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 156, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + -0.4375 + ], + "red_green_led_light_offset": [ + 0.046875, + 0.171875 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 220, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 90, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 130, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.328125, + 0.140625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 176, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 72, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 104, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.3125, + -0.640625 + ], + "red_green_led_light_offset": [ + 0.3125, + 0.140625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 132, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 54, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 78, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.34375 + ], + "red_green_led_light_offset": [ + 0.28125, + 0.15625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 88, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 36, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 52, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.34375, + 0.15625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 44, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 18, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 26, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.25, + -0.625 + ], + "red_green_led_light_offset": [ + 0.28125, + 0.171875 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.3125, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "express-transport-belt": { + "type": "transport-belt", + "name": "express-transport-belt", + "icon": "entity:icons/express-transport-belt", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.3, + "result": "express-transport-belt" + }, + "max_health": 170, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 50 + } + ], + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "working_sound": { + "sound": { + "filename": "entity:sound/express-transport-belt", + "volume": 0.4 + }, + "max_sounds_per_type": 3 + }, + "animation_speed_coefficient": 32, + "animations": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "direction_count": 12, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "direction_count": 12, + "scale": 0.5 + } + }, + "belt_horizontal": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "scale": 0.5 + } + }, + "belt_vertical": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 40, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_top": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 80, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 320, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 120, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 480, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 160, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 640, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 200, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 800, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 240, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 960, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 280, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 1120, + "scale": 0.5 + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "fast_replaceable_group": "transport-belt", + "speed": 0.09375, + "connector_frame_sprites": { + "frame_main": { + "sheet": { + "filename": "entity:connector/hr-ccm-belt-04a-sequence", + "frame_count": 4, + "height": 90, + "line_length": 4, + "priority": "low", + "scale": 0.5, + "shift": [ + 0.09375, + -0.1875 + ], + "variation_count": 7, + "width": 80 + } + }, + "frame_shadow": { + "sheet": { + "draw_as_shadow": true, + "filename": "entity:connector/hr-ccm-belt-04b-sequence-shadow", + "frame_count": 4, + "height": 74, + "line_length": 4, + "priority": "low", + "scale": 0.5, + "shift": [ + 0.390625, + -0.015625 + ], + "variation_count": 7, + "width": 116 + } + }, + "frame_main_scanner": { + "filename": "entity:connector/hr-CCM-BELT-SPRITES-SCANNER", + "frame_count": 8, + "height": 64, + "line_length": 8, + "priority": "low", + "scale": 0.5, + "shift": [ + 0, + 0.015625 + ], + "width": 22 + }, + "frame_main_scanner_movement_speed": 0.032258064516129, + "frame_main_scanner_horizontal_start_shift": [ + -0.25, + -0.09375 + ], + "frame_main_scanner_horizontal_end_shift": [ + 0.25, + -0.09375 + ], + "frame_main_scanner_horizontal_y_scale": 0.7, + "frame_main_scanner_horizontal_rotation": 0, + "frame_main_scanner_vertical_start_shift": [ + 0, + -0.3125 + ], + "frame_main_scanner_vertical_end_shift": [ + 0, + 0.1875 + ], + "frame_main_scanner_vertical_y_scale": 0.75, + "frame_main_scanner_vertical_rotation": 0.25, + "frame_main_scanner_cross_horizontal_start_shift": [ + -0.3125, + -0.0625 + ], + "frame_main_scanner_cross_horizontal_end_shift": [ + 0.3125, + -0.0625 + ], + "frame_main_scanner_cross_horizontal_y_scale": 0.6, + "frame_main_scanner_cross_horizontal_rotation": 0, + "frame_main_scanner_cross_vertical_start_shift": [ + 0, + -0.3125 + ], + "frame_main_scanner_cross_vertical_end_shift": [ + 0, + 0.1875 + ], + "frame_main_scanner_cross_vertical_y_scale": 0.75, + "frame_main_scanner_cross_vertical_rotation": 0.25, + "frame_main_scanner_nw_ne": { + "filename": "entity:connector/transport-belt-connector-frame-main-scanner-nw-ne", + "priority": "low", + "blend_mode": "additive", + "line_length": 8, + "width": 28, + "height": 24, + "frame_count": 32, + "shift": [ + -0.03125, + -0.0625 + ] + }, + "frame_main_scanner_sw_se": { + "filename": "entity:connector/transport-belt-connector-frame-main-scanner-sw-se", + "priority": "low", + "blend_mode": "additive", + "line_length": 8, + "width": 29, + "height": 28, + "frame_count": 32, + "shift": [ + 0.015625, + -0.09375 + ] + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + -0.671875 + ], + "green": [ + 0.671875, + -0.53125 + ] + }, + "shadow": { + "red": [ + 0.8125, + -0.375 + ], + "green": [ + 1.09375, + -0.203125 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.3125, + -0.8125 + ], + "green": [ + 0.5625, + -0.65625 + ] + }, + "shadow": { + "red": [ + 0.734375, + -0.515625 + ], + "green": [ + 1.03125, + -0.34375 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.65625 + ], + "green": [ + 0.671875, + -0.5 + ] + }, + "shadow": { + "red": [ + 0.875, + -0.359375 + ], + "green": [ + 1.171875, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.640625, + -0.6875 + ] + }, + "shadow": { + "red": [ + 0.890625, + -0.546875 + ], + "green": [ + 1.171875, + -0.375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.59375 + ], + "green": [ + 0.65625, + -0.4375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.28125 + ], + "green": [ + 1.21875, + -0.109375 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.359375, + -0.640625 + ], + "green": [ + 0.625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.921875, + -0.328125 + ], + "green": [ + 1.21875, + -0.15625 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + }, + { + "wire": { + "red": [ + 0.40625, + -0.640625 + ], + "green": [ + 0.65625, + -0.484375 + ] + }, + "shadow": { + "red": [ + 0.953125, + -0.359375 + ], + "green": [ + 1.265625, + -0.1875 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 264, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 108, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 156, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + -0.4375 + ], + "red_green_led_light_offset": [ + 0.046875, + 0.171875 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 220, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 90, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 130, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.328125, + 0.140625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 176, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 72, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 104, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.3125, + -0.640625 + ], + "red_green_led_light_offset": [ + 0.3125, + 0.140625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 132, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 54, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 78, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.34375 + ], + "red_green_led_light_offset": [ + 0.28125, + 0.15625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 88, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 36, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 52, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.34375, + 0.15625 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 44, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 18, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 26, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.25, + -0.625 + ], + "red_green_led_light_offset": [ + 0.28125, + 0.171875 + ] + }, + { + "led_blue": { + "filename": "entity:connector/hr-ccm-belt-04c-LED-B", + "priority": "low", + "width": 30, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.28125, + -0.484375 + ] + }, + "led_red": { + "filename": "entity:connector/hr-ccm-belt-04d-LED-R", + "priority": "low", + "width": 34, + "height": 18, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.203125, + 0.15625 + ] + }, + "led_green": { + "filename": "entity:connector/hr-ccm-belt-04e-LED-G", + "priority": "low", + "width": 42, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.1875, + 0.15625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + -0.421875 + ], + "red_green_led_light_offset": [ + 0.3125, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "boiler": { + "type": "boiler", + "name": "boiler", + "icon": "entity:icons/boiler", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "boiler" + }, + "max_health": 200, + "corpse": "small-remnants", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "mode": "output-to-separate-pipe", + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "explosion", + "percent": 30 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -1.29, + -0.79 + ], + [ + 1.29, + 0.79 + ] + ], + "selection_box": [ + [ + -1.5, + -1 + ], + [ + 1.5, + 1 + ] + ], + "target_temperature": 165, + "fluid_box": { + "base_area": 1, + "height": 2, + "base_level": -1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "type": "input-output", + "position": [ + -2, + 0.5 + ] + }, + { + "type": "input-output", + "position": [ + 2, + 0.5 + ] + } + ], + "production_type": "input-output", + "filter": "water" + }, + "output_fluid_box": { + "base_area": 1, + "height": 2, + "base_level": 1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "type": "output", + "position": [ + 0, + -1.5 + ] + } + ], + "production_type": "output", + "filter": "steam" + }, + "energy_consumption": "1.8MW", + "energy_source": { + "type": "burner", + "fuel_category": "chemical", + "effectivity": 0.5, + "fuel_inventory_size": 1, + "emissions": 0.015384615384615385, + "smoke": [ + { + "name": "smoke", + "north_position": [ + -1.1875, + -1.484375 + ], + "south_position": [ + 1.203125, + -1 + ], + "east_position": [ + 0.625, + -2.1875 + ], + "west_position": [ + -0.59375, + -0.265625 + ], + "frequency": 15, + "starting_vertical_speed": 0, + "starting_frame_deviation": 60 + } + ] + }, + "working_sound": { + "sound": { + "filename": "entity:sound/boiler", + "volume": 0.8 + }, + "max_sounds_per_type": 3 + }, + "structure": { + "0": { + "layers": [ + { + "filename": "entity:boiler/boiler-N-idle", + "priority": "extra-high", + "width": 131, + "height": 108, + "shift": [ + -0.015625, + 0.125 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-N-idle", + "priority": "extra-high", + "width": 269, + "height": 221, + "shift": [ + -0.0390625, + 0.1640625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-N-shadow", + "priority": "extra-high", + "width": 137, + "height": 82, + "shift": [ + 0.640625, + 0.28125 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-N-shadow", + "priority": "extra-high", + "width": 274, + "height": 164, + "scale": 0.5, + "shift": [ + 0.640625, + 0.28125 + ], + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:boiler/boiler-E-idle", + "priority": "extra-high", + "width": 105, + "height": 147, + "shift": [ + -0.109375, + -0.015625 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-E-idle", + "priority": "extra-high", + "width": 216, + "height": 301, + "shift": [ + -0.09375, + 0.0390625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-E-shadow", + "priority": "extra-high", + "width": 92, + "height": 97, + "shift": [ + 0.9375, + 0.296875 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-E-shadow", + "priority": "extra-high", + "width": 184, + "height": 194, + "scale": 0.5, + "shift": [ + 0.9375, + 0.296875 + ], + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:boiler/boiler-S-idle", + "priority": "extra-high", + "width": 128, + "height": 95, + "shift": [ + 0.09375, + 0.390625 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-S-idle", + "priority": "extra-high", + "width": 260, + "height": 192, + "shift": [ + 0.125, + 0.40625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-S-shadow", + "priority": "extra-high", + "width": 156, + "height": 66, + "shift": [ + 0.9375, + 0.5 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-S-shadow", + "priority": "extra-high", + "width": 311, + "height": 131, + "scale": 0.5, + "shift": [ + 0.9296875, + 0.4921875 + ], + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:boiler/boiler-W-idle", + "priority": "extra-high", + "width": 96, + "height": 132, + "shift": [ + 0.03125, + 0.15625 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-W-idle", + "priority": "extra-high", + "width": 196, + "height": 273, + "shift": [ + 0.046875, + 0.2421875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-W-shadow", + "priority": "extra-high", + "width": 103, + "height": 109, + "shift": [ + 0.609375, + 0.203125 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-W-shadow", + "priority": "extra-high", + "width": 206, + "height": 218, + "scale": 0.5, + "shift": [ + 0.609375, + 0.203125 + ], + "draw_as_shadow": true + } + } + ] + } + }, + "patch": { + "2": { + "filename": "entity:boiler/boiler-E-patch", + "priority": "extra-high", + "width": 3, + "height": 17, + "shift": [ + 1.046875, + -0.421875 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-E-patch", + "width": 6, + "height": 36, + "shift": [ + 1.046875, + -0.421875 + ], + "scale": 0.5 + } + } + }, + "fire_flicker_enabled": true, + "fire": { + "0": { + "filename": "entity:boiler/boiler-N-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 12, + "height": 13, + "animation_speed": 0.5, + "shift": [ + 0, + -0.265625 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-N-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 26, + "height": 26, + "animation_speed": 0.5, + "shift": [ + 0, + -0.265625 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:boiler/boiler-E-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 14, + "height": 14, + "animation_speed": 0.5, + "shift": [ + -0.3125, + -0.6875 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-E-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 28, + "height": 28, + "animation_speed": 0.5, + "shift": [ + -0.296875, + -0.6875 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:boiler/boiler-S-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 12, + "height": 9, + "animation_speed": 0.5, + "shift": [ + -0.03125, + -0.828125 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-S-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 26, + "height": 16, + "animation_speed": 0.5, + "shift": [ + -0.03125, + -0.828125 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:boiler/boiler-W-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 14, + "height": 14, + "animation_speed": 0.5, + "shift": [ + 0.40625, + -0.71875 + ], + "hr_version": { + "filename": "entity:boiler/hr-boiler-W-fire", + "priority": "extra-high", + "frame_count": 64, + "line_length": 8, + "width": 30, + "height": 29, + "animation_speed": 0.5, + "shift": [ + 0.40625, + -0.7265625 + ], + "scale": 0.5 + } + } + }, + "fire_glow_flicker_enabled": true, + "fire_glow": { + "0": { + "filename": "entity:boiler/boiler-N-light", + "priority": "extra-high", + "frame_count": 1, + "width": 100, + "height": 87, + "shift": [ + -0.03125, + -0.203125 + ], + "blend_mode": "additive", + "hr_version": { + "filename": "entity:boiler/hr-boiler-N-light", + "priority": "extra-high", + "frame_count": 1, + "width": 200, + "height": 173, + "shift": [ + -0.03125, + -0.2109375 + ], + "blend_mode": "additive", + "scale": 0.5 + } + }, + "2": { + "filename": "entity:boiler/boiler-E-light", + "priority": "extra-high", + "frame_count": 1, + "width": 70, + "height": 122, + "shift": [ + 0, + -0.40625 + ], + "blend_mode": "additive", + "hr_version": { + "filename": "entity:boiler/hr-boiler-E-light", + "priority": "extra-high", + "frame_count": 1, + "width": 139, + "height": 244, + "shift": [ + 0.0078125, + -0.40625 + ], + "blend_mode": "additive", + "scale": 0.5 + } + }, + "4": { + "filename": "entity:boiler/boiler-S-light", + "priority": "extra-high", + "frame_count": 1, + "width": 100, + "height": 81, + "shift": [ + 0.03125, + 0.171875 + ], + "blend_mode": "additive", + "hr_version": { + "filename": "entity:boiler/hr-boiler-S-light", + "priority": "extra-high", + "frame_count": 1, + "width": 200, + "height": 162, + "shift": [ + 0.03125, + 0.171875 + ], + "blend_mode": "additive", + "scale": 0.5 + } + }, + "6": { + "filename": "entity:boiler/boiler-W-light", + "priority": "extra-high", + "frame_count": 1, + "width": 68, + "height": 109, + "shift": [ + 0.0625, + -0.203125 + ], + "blend_mode": "additive", + "hr_version": { + "filename": "entity:boiler/hr-boiler-W-light", + "priority": "extra-high", + "frame_count": 1, + "width": 136, + "height": 217, + "shift": [ + 0.0625, + -0.1953125 + ], + "blend_mode": "additive", + "scale": 0.5 + } + } + }, + "burning_cooldown": 20, + "size": { + "width": 3, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "heat-exchanger": { + "type": "boiler", + "name": "heat-exchanger", + "icon": "entity:icons/heat-boiler", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "heat-exchanger" + }, + "max_health": 200, + "corpse": "small-remnants", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "mode": "output-to-separate-pipe", + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "explosion", + "percent": 30 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -1.29, + -0.79 + ], + [ + 1.29, + 0.79 + ] + ], + "selection_box": [ + [ + -1.5, + -1 + ], + [ + 1.5, + 1 + ] + ], + "target_temperature": 500, + "fluid_box": { + "base_area": 1, + "height": 2, + "base_level": -1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "type": "input-output", + "position": [ + -2, + 0.5 + ] + }, + { + "type": "input-output", + "position": [ + 2, + 0.5 + ] + } + ], + "production_type": "input-output", + "filter": "water" + }, + "output_fluid_box": { + "base_area": 1, + "height": 2, + "base_level": 1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "type": "output", + "position": [ + 0, + -1.5 + ] + } + ], + "production_type": "output", + "filter": "steam" + }, + "energy_consumption": "10MW", + "energy_source": { + "type": "heat", + "max_temperature": 1000, + "specific_heat": "1MJ", + "max_transfer": "2GW", + "connections": [ + { + "position": [ + 0, + 0.5 + ], + "direction": 4 + } + ], + "pipe_covers": { + "0": { + "filename": "entity:heat-exchanger/heatex-endings", + "priority": "high", + "x": 0, + "width": 32, + "height": 32, + "frame_count": 1, + "line_length": 4, + "scale": 1, + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-endings", + "priority": "high", + "x": 0, + "width": 64, + "height": 64, + "frame_count": 1, + "line_length": 4, + "scale": 0.5 + } + }, + "2": { + "filename": "entity:heat-exchanger/heatex-endings", + "priority": "high", + "x": 32, + "width": 32, + "height": 32, + "frame_count": 1, + "line_length": 4, + "scale": 1, + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-endings", + "priority": "high", + "x": 64, + "width": 64, + "height": 64, + "frame_count": 1, + "line_length": 4, + "scale": 0.5 + } + }, + "4": { + "filename": "entity:heat-exchanger/heatex-endings", + "priority": "high", + "x": 64, + "width": 32, + "height": 32, + "frame_count": 1, + "line_length": 4, + "scale": 1, + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-endings", + "priority": "high", + "x": 128, + "width": 64, + "height": 64, + "frame_count": 1, + "line_length": 4, + "scale": 0.5 + } + }, + "6": { + "filename": "entity:heat-exchanger/heatex-endings", + "priority": "high", + "x": 96, + "width": 32, + "height": 32, + "frame_count": 1, + "line_length": 4, + "scale": 1, + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-endings", + "priority": "high", + "x": 192, + "width": 64, + "height": 64, + "frame_count": 1, + "line_length": 4, + "scale": 0.5 + } + } + } + }, + "working_sound": { + "sound": { + "filename": "entity:sound/boiler", + "volume": 0.8 + }, + "max_sounds_per_type": 3 + }, + "structure": { + "0": { + "layers": [ + { + "filename": "entity:heat-exchanger/heatex-N-idle", + "priority": "extra-high", + "width": 131, + "height": 108, + "shift": [ + -0.015625, + 0.125 + ], + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-N-idle", + "priority": "extra-high", + "width": 269, + "height": 221, + "shift": [ + -0.0390625, + 0.1640625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-N-shadow", + "priority": "extra-high", + "width": 137, + "height": 82, + "shift": [ + 0.640625, + 0.28125 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-N-shadow", + "priority": "extra-high", + "width": 274, + "height": 164, + "scale": 0.5, + "shift": [ + 0.640625, + 0.28125 + ], + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:heat-exchanger/heatex-E-idle", + "priority": "extra-high", + "width": 102, + "height": 147, + "shift": [ + -0.0625, + -0.015625 + ], + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-E-idle", + "priority": "extra-high", + "width": 211, + "height": 301, + "shift": [ + -0.0546875, + 0.0390625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-E-shadow", + "priority": "extra-high", + "width": 92, + "height": 97, + "shift": [ + 0.9375, + 0.296875 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-E-shadow", + "priority": "extra-high", + "width": 184, + "height": 194, + "scale": 0.5, + "shift": [ + 0.9375, + 0.296875 + ], + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:heat-exchanger/heatex-S-idle", + "priority": "extra-high", + "width": 128, + "height": 100, + "shift": [ + 0.09375, + 0.3125 + ], + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-S-idle", + "priority": "extra-high", + "width": 260, + "height": 201, + "shift": [ + 0.125, + 0.3359375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-S-shadow", + "priority": "extra-high", + "width": 156, + "height": 66, + "shift": [ + 0.9375, + 0.5 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-S-shadow", + "priority": "extra-high", + "width": 311, + "height": 131, + "scale": 0.5, + "shift": [ + 0.9296875, + 0.4921875 + ], + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:heat-exchanger/heatex-W-idle", + "priority": "extra-high", + "width": 96, + "height": 132, + "shift": [ + 0.03125, + 0.15625 + ], + "hr_version": { + "filename": "entity:heat-exchanger/hr-heatex-W-idle", + "priority": "extra-high", + "width": 196, + "height": 273, + "shift": [ + 0.046875, + 0.2421875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:boiler/boiler-W-shadow", + "priority": "extra-high", + "width": 103, + "height": 109, + "shift": [ + 0.609375, + 0.203125 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:boiler/hr-boiler-W-shadow", + "priority": "extra-high", + "width": 206, + "height": 218, + "scale": 0.5, + "shift": [ + 0.609375, + 0.203125 + ], + "draw_as_shadow": true + } + } + ] + } + }, + "burning_cooldown": 20, + "size": { + "width": 3, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "wooden-chest": { + "type": "container", + "name": "wooden-chest", + "icon": "entity:icons/wooden-chest", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "wooden-chest" + }, + "max_health": 100, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "fast_replaceable_group": "container", + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "inventory_size": 16, + "open_sound": { + "filename": "entity:sound/wooden-chest-open" + }, + "close_sound": { + "filename": "entity:sound/wooden-chest-close" + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-wood-impact", + "volume": 1 + }, + "picture": { + "filename": "entity:wooden-chest/wooden-chest", + "priority": "extra-high", + "width": 46, + "height": 33, + "shift": [ + 0.25, + 0.015625 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "iron-chest": { + "type": "container", + "name": "iron-chest", + "icon": "entity:icons/iron-chest", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "iron-chest" + }, + "max_health": 200, + "corpse": "small-remnants", + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "resistances": [ + { + "type": "fire", + "percent": 80 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "fast_replaceable_group": "container", + "inventory_size": 32, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:iron-chest/iron-chest", + "priority": "extra-high", + "width": 48, + "height": 34, + "shift": [ + 0.1875, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "steel-chest": { + "type": "container", + "name": "steel-chest", + "icon": "entity:icons/steel-chest", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "steel-chest" + }, + "max_health": 350, + "corpse": "small-remnants", + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "impact", + "percent": 60 + } + ], + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "fast_replaceable_group": "container", + "inventory_size": 48, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:steel-chest/steel-chest", + "priority": "extra-high", + "width": 48, + "height": 34, + "shift": [ + 0.1875, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "small-electric-pole": { + "type": "electric-pole", + "name": "small-electric-pole", + "icon": "entity:icons/small-electric-pole", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "fast-replaceable-no-build-while-moving" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "small-electric-pole" + }, + "max_health": 100, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "drawing_box": [ + [ + -0.5, + -2.6 + ], + [ + 0.5, + 0.5 + ] + ], + "maximum_wire_distance": 7.5, + "supply_area_distance": 2.5, + "vehicle_impact_sound": { + "filename": "entity:sound/car-wood-impact", + "volume": 1 + }, + "track_coverage_during_build_by_moving": true, + "fast_replaceable_group": "electric-pole", + "pictures": { + "filename": "entity:small-electric-pole/small-electric-pole", + "priority": "extra-high", + "width": 123, + "height": 124, + "direction_count": 4, + "shift": [ + 1.4, + -1.1 + ] + }, + "connection_points": [ + { + "shadow": { + "copper": [ + 2.7, + 0 + ], + "red": [ + 2.3, + 0 + ], + "green": [ + 3.1, + 0 + ] + }, + "wire": { + "copper": [ + 0, + -2.7 + ], + "red": [ + -0.375, + -2.625 + ], + "green": [ + 0.40625, + -2.625 + ] + } + }, + { + "shadow": { + "copper": [ + 2.7, + -0.05 + ], + "red": [ + 2.2, + -0.35 + ], + "green": [ + 3, + 0.12 + ] + }, + "wire": { + "copper": [ + -0.04, + -2.8 + ], + "red": [ + -0.375, + -2.9375 + ], + "green": [ + 0.1875, + -2.5625 + ] + } + }, + { + "shadow": { + "copper": [ + 2.5, + -0.1 + ], + "red": [ + 2.55, + -0.45 + ], + "green": [ + 2.5, + 0.25 + ] + }, + "wire": { + "copper": [ + -0.15625, + -2.6875 + ], + "red": [ + -0.0625, + -2.96875 + ], + "green": [ + -0.03125, + -2.40625 + ] + } + }, + { + "shadow": { + "copper": [ + 2.3, + -0.1 + ], + "red": [ + 2.65, + -0.4 + ], + "green": [ + 1.75, + 0.2 + ] + }, + "wire": { + "copper": [ + -0.03125, + -2.71875 + ], + "red": [ + 0.3125, + -2.875 + ], + "green": [ + -0.25, + -2.5 + ] + } + } + ], + "radius_visualisation_picture": { + "filename": "entity:small-electric-pole/electric-pole-radius-visualization", + "width": 12, + "height": 12, + "priority": "extra-high-no-scale" + }, + "size": { + "width": 1, + "height": 1 + } + }, + "big-electric-pole": { + "type": "electric-pole", + "name": "big-electric-pole", + "icon": "entity:icons/big-electric-pole", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "fast-replaceable-no-build-while-moving" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "big-electric-pole" + }, + "max_health": 150, + "corpse": "medium-remnants", + "resistances": [ + { + "type": "fire", + "percent": 100 + } + ], + "collision_box": [ + [ + -0.65, + -0.65 + ], + [ + 0.65, + 0.65 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "drawing_box": [ + [ + -1, + -3 + ], + [ + 1, + 0.5 + ] + ], + "maximum_wire_distance": 30, + "supply_area_distance": 2, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "pictures": { + "filename": "entity:big-electric-pole/big-electric-pole", + "priority": "high", + "width": 168, + "height": 165, + "direction_count": 4, + "shift": [ + 1.6, + -1.1 + ] + }, + "connection_points": [ + { + "shadow": { + "copper": [ + 2.7, + 0 + ], + "green": [ + 1.8, + 0 + ], + "red": [ + 3.6, + 0 + ] + }, + "wire": { + "copper": [ + 0, + -3.125 + ], + "green": [ + -0.59375, + -3.125 + ], + "red": [ + 0.625, + -3.125 + ] + } + }, + { + "shadow": { + "copper": [ + 3.1, + 0.2 + ], + "green": [ + 2.3, + -0.3 + ], + "red": [ + 3.8, + 0.6 + ] + }, + "wire": { + "copper": [ + -0.0625, + -3.125 + ], + "green": [ + -0.5, + -3.4375 + ], + "red": [ + 0.34375, + -2.8125 + ] + } + }, + { + "shadow": { + "copper": [ + 2.9, + 0.06 + ], + "green": [ + 3, + -0.6 + ], + "red": [ + 3, + 0.8 + ] + }, + "wire": { + "copper": [ + -0.09375, + -3.09375 + ], + "green": [ + -0.09375, + -3.53125 + ], + "red": [ + -0.09375, + -2.65625 + ] + } + }, + { + "shadow": { + "copper": [ + 3.1, + 0.2 + ], + "green": [ + 3.8, + -0.3 + ], + "red": [ + 2.35, + 0.6 + ] + }, + "wire": { + "copper": [ + -0.0625, + -3.1875 + ], + "green": [ + 0.375, + -3.5 + ], + "red": [ + -0.46875, + -2.90625 + ] + } + } + ], + "radius_visualisation_picture": { + "filename": "entity:small-electric-pole/electric-pole-radius-visualization", + "width": 12, + "height": 12, + "priority": "extra-high-no-scale" + }, + "size": { + "width": 2, + "height": 2 + } + }, + "medium-electric-pole": { + "type": "electric-pole", + "name": "medium-electric-pole", + "icon": "entity:icons/medium-electric-pole", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "fast-replaceable-no-build-while-moving" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "medium-electric-pole" + }, + "max_health": 100, + "corpse": "small-remnants", + "track_coverage_during_build_by_moving": true, + "fast_replaceable_group": "electric-pole", + "resistances": [ + { + "type": "fire", + "percent": 100 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "drawing_box": [ + [ + -0.5, + -2.8 + ], + [ + 0.5, + 0.5 + ] + ], + "maximum_wire_distance": 9, + "supply_area_distance": 3.5, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "pictures": { + "filename": "entity:medium-electric-pole/medium-electric-pole", + "priority": "high", + "width": 136, + "height": 122, + "direction_count": 4, + "shift": [ + 1.4, + -1 + ] + }, + "connection_points": [ + { + "shadow": { + "copper": [ + 2.55, + 0.4 + ], + "green": [ + 2, + 0.4 + ], + "red": [ + 3.05, + 0.4 + ] + }, + "wire": { + "copper": [ + -0.03125, + -2.46875 + ], + "green": [ + -0.34375, + -2.46875 + ], + "red": [ + 0.25, + -2.46875 + ] + } + }, + { + "shadow": { + "copper": [ + 2.9, + 0.1 + ], + "green": [ + 2.6, + -0.15 + ], + "red": [ + 3.25, + 0.35 + ] + }, + "wire": { + "copper": [ + 0.0625, + -2.65625 + ], + "green": [ + -0.15625, + -2.84375 + ], + "red": [ + 0.28125, + -2.5 + ] + } + }, + { + "shadow": { + "copper": [ + 1.5, + -0.2 + ], + "green": [ + 1.5, + -0.55 + ], + "red": [ + 1.5, + 0.1 + ] + }, + "wire": { + "copper": [ + -0.4375, + -2.28125 + ], + "green": [ + -0.4375, + -2.5625 + ], + "red": [ + -0.4375, + -2.0625 + ] + } + }, + { + "shadow": { + "copper": [ + 2.88, + 0.2 + ], + "green": [ + 3.2, + -0.1 + ], + "red": [ + 2.45, + 0.4 + ] + }, + "wire": { + "copper": [ + -0.0625, + -2.5625 + ], + "green": [ + 0.15625, + -2.75 + ], + "red": [ + -0.28125, + -2.4375 + ] + } + } + ], + "radius_visualisation_picture": { + "filename": "entity:small-electric-pole/electric-pole-radius-visualization", + "width": 12, + "height": 12, + "priority": "extra-high-no-scale" + }, + "size": { + "width": 1, + "height": 1 + } + }, + "substation": { + "type": "electric-pole", + "name": "substation", + "icon": "entity:icons/substation", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "substation" + }, + "max_health": 200, + "corpse": "medium-remnants", + "track_coverage_during_build_by_moving": true, + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "drawing_box": [ + [ + -1, + -3 + ], + [ + 1, + 1 + ] + ], + "maximum_wire_distance": 18, + "supply_area_distance": 9, + "pictures": { + "filename": "entity:substation/substation", + "priority": "high", + "width": 132, + "height": 144, + "direction_count": 4, + "shift": [ + 0.9, + -1 + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/substation" + }, + "apparent_volume": 1.5, + "audible_distance_modifier": 0.5, + "probability": 0.005555555555555556 + }, + "connection_points": [ + { + "shadow": { + "copper": [ + 1.9, + -0.6 + ], + "green": [ + 1.3, + -0.6 + ], + "red": [ + 2.65, + -0.6 + ] + }, + "wire": { + "copper": [ + -0.25, + -2.71875 + ], + "green": [ + -0.84375, + -2.71875 + ], + "red": [ + 0.34375, + -2.71875 + ] + } + }, + { + "shadow": { + "copper": [ + 1.9, + -0.6 + ], + "green": [ + 1.2, + -0.8 + ], + "red": [ + 2.5, + -0.35 + ] + }, + "wire": { + "copper": [ + -0.21875, + -2.71875 + ], + "green": [ + -0.65625, + -3.03125 + ], + "red": [ + 0.1875, + -2.4375 + ] + } + }, + { + "shadow": { + "copper": [ + 1.9, + -0.6 + ], + "green": [ + 1.9, + -0.9 + ], + "red": [ + 1.9, + -0.3 + ] + }, + "wire": { + "copper": [ + -0.21875, + -2.71875 + ], + "green": [ + -0.21875, + -3.15625 + ], + "red": [ + -0.21875, + -2.34375 + ] + } + }, + { + "shadow": { + "copper": [ + 1.8, + -0.7 + ], + "green": [ + 1.3, + -0.6 + ], + "red": [ + 2.4, + -1.15 + ] + }, + "wire": { + "copper": [ + -0.21875, + -2.75 + ], + "green": [ + -0.65625, + -2.4375 + ], + "red": [ + 0.1875, + -3.03125 + ] + } + } + ], + "radius_visualisation_picture": { + "filename": "entity:small-electric-pole/electric-pole-radius-visualization", + "width": 12, + "height": 12, + "priority": "extra-high-no-scale" + }, + "size": { + "width": 2, + "height": 2 + } + }, + "steam-engine": { + "type": "generator", + "name": "steam-engine", + "icon": "entity:icons/steam-engine", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "steam-engine" + }, + "max_health": 400, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "alert_icon_shift": [ + 0.09375, + -1.0625 + ], + "effectivity": 1, + "fluid_usage_per_tick": 0.5, + "maximum_temperature": 165, + "resistances": [ + { + "type": "fire", + "percent": 70 + }, + { + "type": "impact", + "percent": 30 + } + ], + "fast_replaceable_group": "steam-engine", + "collision_box": [ + [ + -1.35, + -2.35 + ], + [ + 1.35, + 2.35 + ] + ], + "selection_box": [ + [ + -1.5, + -2.5 + ], + [ + 1.5, + 2.5 + ] + ], + "fluid_box": { + "base_area": 1, + "height": 2, + "base_level": -1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "type": "input-output", + "position": [ + 0, + 3 + ] + }, + { + "type": "input-output", + "position": [ + 0, + -3 + ] + } + ], + "production_type": "input-output", + "filter": "steam", + "minimum_temperature": 100 + }, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-output" + }, + "horizontal_animation": { + "layers": [ + { + "filename": "entity:steam-engine/steam-engine-H", + "width": 176, + "height": 128, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0.03125, + -0.15625 + ], + "hr_version": { + "filename": "entity:steam-engine/hr-steam-engine-H", + "width": 352, + "height": 257, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0.03125, + -0.1484375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:steam-engine/steam-engine-H-shadow", + "width": 254, + "height": 80, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 1.5, + 0.75 + ], + "hr_version": { + "filename": "entity:steam-engine/hr-steam-engine-H-shadow", + "width": 508, + "height": 160, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 1.5, + 0.75 + ], + "scale": 0.5 + } + } + ] + }, + "vertical_animation": { + "layers": [ + { + "filename": "entity:steam-engine/steam-engine-V", + "width": 112, + "height": 195, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0.15625, + -0.203125 + ], + "hr_version": { + "filename": "entity:steam-engine/hr-steam-engine-V", + "width": 225, + "height": 391, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0.1484375, + -0.1953125 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:steam-engine/steam-engine-V-shadow", + "width": 165, + "height": 153, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 1.265625, + 0.296875 + ], + "hr_version": { + "filename": "entity:steam-engine/hr-steam-engine-V-shadow", + "width": 330, + "height": 307, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 1.265625, + 0.2890625 + ], + "scale": 0.5 + } + } + ] + }, + "smoke": [ + { + "name": "light-smoke", + "north_position": [ + 0.9, + 0 + ], + "east_position": [ + -2, + -2 + ], + "frequency": 0.3125, + "starting_vertical_speed": 0.08, + "slow_down_factor": 1, + "starting_frame_deviation": 60 + } + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/steam-engine-90bpm", + "volume": 0.6 + }, + "match_speed_to_activity": true + }, + "min_perceived_performance": 0.25, + "performance_to_sound_speedup": 0.5, + "size": { + "width": 3, + "height": 5 + }, + "possible_rotations": [ + 0, + 2 + ] + }, + "steam-turbine": { + "type": "generator", + "name": "steam-turbine", + "icon": "entity:icons/steam-turbine", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "steam-turbine" + }, + "max_health": 300, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "alert_icon_shift": [ + 0, + -0.375 + ], + "effectivity": 1, + "fluid_usage_per_tick": 1, + "maximum_temperature": 500, + "burns_fluid": false, + "resistances": [ + { + "type": "fire", + "percent": 70 + } + ], + "fast_replaceable_group": "steam-engine", + "collision_box": [ + [ + -1.35, + -2.35 + ], + [ + 1.35, + 2.35 + ] + ], + "selection_box": [ + [ + -1.5, + -2.5 + ], + [ + 1.5, + 2.5 + ] + ], + "fluid_box": { + "base_area": 1, + "height": 2, + "base_level": -1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "type": "input-output", + "position": [ + 0, + 3 + ] + }, + { + "type": "input-output", + "position": [ + 0, + -3 + ] + } + ], + "production_type": "input-output", + "filter": "steam", + "minimum_temperature": 100 + }, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-output" + }, + "horizontal_animation": { + "layers": [ + { + "filename": "entity:steam-turbine/steam-turbine-H", + "width": 160, + "height": 123, + "frame_count": 8, + "line_length": 4, + "shift": [ + 0, + -0.078125 + ], + "hr_version": { + "filename": "entity:steam-turbine/hr-steam-turbine-H", + "width": 320, + "height": 245, + "frame_count": 8, + "line_length": 4, + "shift": [ + 0, + -0.0859375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:steam-turbine/steam-turbine-H-shadow", + "width": 217, + "height": 74, + "repeat_count": 8, + "frame_count": 1, + "line_length": 1, + "draw_as_shadow": true, + "shift": [ + 0.8984375, + 0.5625 + ], + "hr_version": { + "filename": "entity:steam-turbine/hr-steam-turbine-H-shadow", + "width": 435, + "height": 150, + "repeat_count": 8, + "frame_count": 1, + "line_length": 1, + "draw_as_shadow": true, + "shift": [ + 0.890625, + 0.5625 + ], + "scale": 0.5 + } + } + ] + }, + "vertical_animation": { + "layers": [ + { + "filename": "entity:steam-turbine/steam-turbine-V", + "width": 108, + "height": 173, + "frame_count": 8, + "line_length": 4, + "shift": [ + 0.15625, + 0.203125 + ], + "hr_version": { + "filename": "entity:steam-turbine/hr-steam-turbine-V", + "width": 217, + "height": 347, + "frame_count": 8, + "line_length": 4, + "shift": [ + 0.1484375, + 0.2109375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:steam-turbine/steam-turbine-V-shadow", + "width": 151, + "height": 131, + "repeat_count": 8, + "frame_count": 1, + "line_length": 1, + "draw_as_shadow": true, + "shift": [ + 1.234375, + 0.765625 + ], + "hr_version": { + "filename": "entity:steam-turbine/hr-steam-turbine-V-shadow", + "width": 302, + "height": 260, + "repeat_count": 8, + "frame_count": 1, + "line_length": 1, + "draw_as_shadow": true, + "shift": [ + 1.234375, + 0.765625 + ], + "scale": 0.5 + } + } + ] + }, + "smoke": [ + { + "name": "turbine-smoke", + "north_position": [ + 0, + -1 + ], + "east_position": [ + 0.75, + -0.75 + ], + "frequency": 0.3125, + "starting_vertical_speed": 0.08, + "slow_down_factor": 1, + "starting_frame_deviation": 60 + } + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/steam-engine-90bpm", + "volume": 0.6 + }, + "match_speed_to_activity": true + }, + "min_perceived_performance": 0.25, + "performance_to_sound_speedup": 0.5, + "size": { + "width": 3, + "height": 5 + }, + "possible_rotations": [ + 0, + 2 + ] + }, + "offshore-pump": { + "type": "offshore-pump", + "name": "offshore-pump", + "icon": "entity:icons/offshore-pump", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "filter-directions" + ], + "collision_mask": [ + "ground-tile", + "object-layer" + ], + "fluid_box_tile_collision_test": [ + "ground-tile" + ], + "adjacent_tile_collision_test": [ + "water-tile" + ], + "minable": { + "mining_time": 1, + "result": "offshore-pump" + }, + "max_health": 150, + "corpse": "small-remnants", + "fluid": "water", + "resistances": [ + { + "type": "fire", + "percent": 70 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.6, + -1.05 + ], + [ + 0.6, + 0.3 + ] + ], + "selection_box": [ + [ + -1, + -1.49 + ], + [ + 1, + 0.49 + ] + ], + "fluid_box": { + "base_area": 1, + "base_level": 1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "production_type": "output", + "pipe_connections": [ + { + "position": [ + 0, + 1 + ], + "type": "output" + } + ] + }, + "pumping_speed": 20, + "tile_width": 1, + "tile_height": 1, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "0": { + "filename": "entity:offshore-pump/offshore-pump", + "priority": "high", + "shift": [ + 0.90625, + 0.0625 + ], + "width": 160, + "height": 102 + }, + "2": { + "filename": "entity:offshore-pump/offshore-pump", + "priority": "high", + "shift": [ + 0.90625, + 0.0625 + ], + "x": 160, + "width": 160, + "height": 102 + }, + "4": { + "filename": "entity:offshore-pump/offshore-pump", + "priority": "high", + "shift": [ + 0.90625, + 0.65625 + ], + "x": 320, + "width": 160, + "height": 102 + }, + "6": { + "filename": "entity:offshore-pump/offshore-pump", + "priority": "high", + "shift": [ + 1, + 0.0625 + ], + "x": 480, + "width": 160, + "height": 102 + } + }, + "placeable_position_visualization": { + "filename": "entity:graphics/cursor-boxes-32x32", + "priority": "extra-high-no-scale", + "width": 64, + "height": 64, + "scale": 0.5, + "x": 192 + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.390625, + 0.03125 + ], + "green": [ + 0.453125, + 0.265625 + ] + }, + "shadow": { + "red": [ + 2.15625, + 0.890625 + ], + "green": [ + 2, + 0.984375 + ] + } + }, + { + "wire": { + "red": [ + 0.453125, + -0.53125 + ], + "green": [ + 0.671875, + -0.453125 + ] + }, + "shadow": { + "red": [ + 2.109375, + 0.375 + ], + "green": [ + 2.234375, + 0.390625 + ] + } + }, + { + "wire": { + "red": [ + 0.171875, + -0.234375 + ], + "green": [ + 0.203125, + 0 + ] + }, + "shadow": { + "red": [ + 1.796875, + 1.234375 + ], + "green": [ + 1.71875, + 1.390625 + ] + } + }, + { + "wire": { + "red": [ + -0.421875, + -0.109375 + ], + "green": [ + -0.609375, + -0.03125 + ] + }, + "shadow": { + "red": [ + 2.671875, + 0.5625 + ], + "green": [ + 2.375, + 0.546875 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 100, + "shift": [ + 0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 116, + "shift": [ + 0.09375, + -0.015625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 112, + "shift": [ + 0.25, + 0.109375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 120, + "shift": [ + 0.09375, + -0.015625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 88, + "shift": [ + 0.09375, + -0.015625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 92, + "shift": [ + 0.09375, + -0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 92, + "shift": [ + 0.09375, + -0.015625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.265625 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.09375 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 208, + "y": 50, + "shift": [ + 0.359375, + -0.1875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 248, + "y": 58, + "shift": [ + 0.359375, + -0.21875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 280, + "y": 56, + "shift": [ + 0.515625, + -0.09375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 240, + "y": 60, + "shift": [ + 0.359375, + -0.21875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 184, + "y": 44, + "shift": [ + 0.359375, + -0.21875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 46, + "shift": [ + 0.359375, + -0.21875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 46, + "shift": [ + 0.359375, + -0.21875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.65625, + -0.265625 + ], + "red_green_led_light_offset": [ + 0.515625, + -0.3125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 50, + "shift": [ + -0.15625, + -0.203125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 58, + "shift": [ + -0.15625, + -0.234375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 56, + "shift": [ + 0, + -0.109375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 60, + "shift": [ + -0.15625, + -0.234375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 44, + "shift": [ + -0.15625, + -0.234375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 46, + "shift": [ + -0.15625, + -0.234375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 46, + "shift": [ + -0.15625, + -0.234375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + -0.0625 + ], + "red_green_led_light_offset": [ + -0.125, + -0.203125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 50, + "shift": [ + -0.3125, + -0.265625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 58, + "shift": [ + -0.3125, + -0.296875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 56, + "shift": [ + -0.15625, + -0.171875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 60, + "shift": [ + -0.3125, + -0.296875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 44, + "shift": [ + -0.3125, + -0.296875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 46, + "shift": [ + -0.3125, + -0.296875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 46, + "shift": [ + -0.3125, + -0.296875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.59375, + -0.3125 + ], + "red_green_led_light_offset": [ + -0.46875, + -0.375 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "inserter": { + "type": "inserter", + "name": "inserter", + "icon": "entity:icons/inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "inserter" + }, + "max_health": 150, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "energy_per_movement": 5000, + "energy_per_rotation": 5000, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "drain": "0.4kW" + }, + "extension_speed": 0.03, + "rotation_speed": 0.014, + "fast_replaceable_group": "inserter", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-basic-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-5", + "volume": 0.75 + } + ] + }, + "hand_base_picture": { + "filename": "entity:inserter/inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:inserter/hr-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:inserter/inserter-hand-closed", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:inserter/hr-inserter-hand-closed", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:inserter/inserter-hand-open", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:inserter/hr-inserter-hand-open", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "pickup_position": [ + 0, + -1 + ], + "insert_position": [ + 0, + 1.2 + ], + "platform_picture": { + "sheet": { + "filename": "entity:inserter/inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:inserter/hr-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "burner-inserter": { + "type": "inserter", + "name": "burner-inserter", + "icon": "entity:icons/burner-inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "burner-inserter" + }, + "max_health": 100, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "energy_per_movement": 100000, + "energy_per_rotation": 100000, + "energy_source": { + "type": "burner", + "fuel_category": "chemical", + "effectivity": 1, + "fuel_inventory_size": 1, + "smoke": [ + { + "name": "smoke", + "deviation": [ + 0.1, + 0.1 + ], + "frequency": 9 + } + ] + }, + "extension_speed": 0.0214, + "fast_replaceable_group": "inserter", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-basic-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-basic-5", + "volume": 0.75 + } + ] + }, + "hand_base_picture": { + "filename": "entity:burner-inserter/burner-inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 34, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:burner-inserter/burner-inserter-hand-closed", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-closed", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:burner-inserter/burner-inserter-hand-open", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-open", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "pickup_position": [ + 0, + -1 + ], + "insert_position": [ + 0, + 1.2 + ], + "platform_picture": { + "sheet": { + "filename": "entity:burner-inserter/burner-inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "rotation_speed": 0.01, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "long-handed-inserter": { + "type": "inserter", + "name": "long-handed-inserter", + "icon": "entity:icons/long-handed-inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "long-handed-inserter" + }, + "max_health": 160, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "pickup_position": [ + 0, + -2 + ], + "insert_position": [ + 0, + 2.2 + ], + "energy_per_movement": 5000, + "energy_per_rotation": 5000, + "rotation_speed": 0.02, + "extension_speed": 0.0457, + "hand_size": 1.5, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "drain": "0.4kW" + }, + "fast_replaceable_group": "long-handed-inserter", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-long-handed-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-long-handed-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-long-handed-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-long-handed-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-long-handed-5", + "volume": 0.75 + } + ] + }, + "hand_base_picture": { + "filename": "entity:long-handed-inserter/long-handed-inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 34, + "hr_version": { + "filename": "entity:long-handed-inserter/hr-long-handed-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:long-handed-inserter/long-handed-inserter-hand-closed", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:long-handed-inserter/hr-long-handed-inserter-hand-closed", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:long-handed-inserter/long-handed-inserter-hand-open", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:long-handed-inserter/hr-long-handed-inserter-hand-open", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "platform_picture": { + "sheet": { + "filename": "entity:long-handed-inserter/long-handed-inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:long-handed-inserter/hr-long-handed-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "fast-inserter": { + "type": "inserter", + "name": "fast-inserter", + "icon": "entity:icons/fast-inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "fast-inserter" + }, + "max_health": 150, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "pickup_position": [ + 0, + -1 + ], + "insert_position": [ + 0, + 1.2 + ], + "energy_per_movement": 7000, + "energy_per_rotation": 7000, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "drain": "0.5kW" + }, + "extension_speed": 0.07, + "rotation_speed": 0.04, + "fast_replaceable_group": "inserter", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-fast-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-5", + "volume": 0.75 + } + ] + }, + "hand_base_picture": { + "filename": "entity:fast-inserter/fast-inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 34, + "hr_version": { + "filename": "entity:fast-inserter/hr-fast-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:fast-inserter/fast-inserter-hand-closed", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:fast-inserter/hr-fast-inserter-hand-closed", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:fast-inserter/fast-inserter-hand-open", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:fast-inserter/hr-fast-inserter-hand-open", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "platform_picture": { + "sheet": { + "filename": "entity:fast-inserter/fast-inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:fast-inserter/hr-fast-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "stack-inserter": { + "type": "inserter", + "name": "stack-inserter", + "icon": "entity:icons/stack-inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "stack": true, + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "stack-inserter" + }, + "max_health": 160, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "pickup_position": [ + 0, + -1 + ], + "insert_position": [ + 0, + 1.2 + ], + "energy_per_movement": 20000, + "energy_per_rotation": 20000, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "drain": "1kW" + }, + "extension_speed": 0.07, + "rotation_speed": 0.04, + "fast_replaceable_group": "inserter", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-fast-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-5", + "volume": 0.75 + } + ] + }, + "hand_base_picture": { + "filename": "entity:stack-inserter/stack-inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 34, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:stack-inserter/stack-inserter-hand-closed", + "priority": "extra-high", + "width": 24, + "height": 41, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-closed", + "priority": "extra-high", + "width": 100, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:stack-inserter/stack-inserter-hand-open", + "priority": "extra-high", + "width": 32, + "height": 41, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-open", + "priority": "extra-high", + "width": 130, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:stack-inserter/stack-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 24, + "height": 41, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 100, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:stack-inserter/stack-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 32, + "height": 41, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 130, + "height": 164, + "scale": 0.25 + } + }, + "platform_picture": { + "sheet": { + "filename": "entity:stack-inserter/stack-inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "stack-filter-inserter": { + "type": "inserter", + "name": "stack-filter-inserter", + "icon": "entity:icons/stack-filter-inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "stack": true, + "filter_count": 1, + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "stack-filter-inserter" + }, + "max_health": 160, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "pickup_position": [ + 0, + -1 + ], + "insert_position": [ + 0, + 1.2 + ], + "energy_per_movement": 20000, + "energy_per_rotation": 20000, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "drain": "1kW" + }, + "extension_speed": 0.07, + "rotation_speed": 0.04, + "fast_replaceable_group": "inserter", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-fast-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-5", + "volume": 0.75 + } + ] + }, + "hand_base_picture": { + "filename": "entity:stack-filter-inserter/stack-filter-inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 34, + "hr_version": { + "filename": "entity:stack-filter-inserter/hr-stack-filter-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:stack-filter-inserter/stack-filter-inserter-hand-closed", + "priority": "extra-high", + "width": 24, + "height": 41, + "hr_version": { + "filename": "entity:stack-filter-inserter/hr-stack-filter-inserter-hand-closed", + "priority": "extra-high", + "width": 100, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:stack-filter-inserter/stack-filter-inserter-hand-open", + "priority": "extra-high", + "width": 32, + "height": 41, + "hr_version": { + "filename": "entity:stack-filter-inserter/hr-stack-filter-inserter-hand-open", + "priority": "extra-high", + "width": 130, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:stack-inserter/stack-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 24, + "height": 41, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 100, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:stack-inserter/stack-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 32, + "height": 41, + "hr_version": { + "filename": "entity:stack-inserter/hr-stack-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 130, + "height": 164, + "scale": 0.25 + } + }, + "platform_picture": { + "sheet": { + "filename": "entity:stack-filter-inserter/stack-filter-inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:stack-filter-inserter/hr-stack-filter-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "filter-inserter": { + "type": "inserter", + "name": "filter-inserter", + "icon": "entity:icons/filter-inserter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "filter-inserter" + }, + "max_health": 150, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 90 + } + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "match_progress_to_activity": true, + "sound": [ + { + "filename": "entity:sound/inserter-fast-1", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-2", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-3", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-4", + "volume": 0.75 + }, + { + "filename": "entity:sound/inserter-fast-5", + "volume": 0.75 + } + ] + }, + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.4, + -0.35 + ], + [ + 0.4, + 0.45 + ] + ], + "pickup_position": [ + 0, + -1 + ], + "insert_position": [ + 0, + 1.2 + ], + "energy_per_movement": 8000, + "energy_per_rotation": 8000, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "drain": "0.5kW" + }, + "extension_speed": 0.07, + "rotation_speed": 0.04, + "fast_replaceable_group": "inserter", + "filter_count": 5, + "hand_base_picture": { + "filename": "entity:filter-inserter/filter-inserter-hand-base", + "priority": "extra-high", + "width": 8, + "height": 34, + "hr_version": { + "filename": "entity:filter-inserter/hr-filter-inserter-hand-base", + "priority": "extra-high", + "width": 32, + "height": 136, + "scale": 0.25 + } + }, + "hand_closed_picture": { + "filename": "entity:filter-inserter/filter-inserter-hand-closed", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:filter-inserter/hr-filter-inserter-hand-closed", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_picture": { + "filename": "entity:filter-inserter/filter-inserter-hand-open", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:filter-inserter/hr-filter-inserter-hand-open", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_base_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 8, + "height": 33, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-base-shadow", + "priority": "extra-high", + "width": 32, + "height": 132, + "scale": 0.25 + } + }, + "hand_closed_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-closed-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "hand_open_shadow": { + "filename": "entity:burner-inserter/burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 18, + "height": 41, + "hr_version": { + "filename": "entity:burner-inserter/hr-burner-inserter-hand-open-shadow", + "priority": "extra-high", + "width": 72, + "height": 164, + "scale": 0.25 + } + }, + "platform_picture": { + "sheet": { + "filename": "entity:filter-inserter/filter-inserter-platform", + "priority": "extra-high", + "width": 46, + "height": 46, + "shift": [ + 0.09375, + 0 + ], + "hr_version": { + "filename": "entity:filter-inserter/hr-filter-inserter-platform", + "priority": "extra-high", + "width": 105, + "height": 79, + "shift": [ + 0.046875, + 0.203125 + ], + "scale": 0.5 + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.203125, + -0.34375 + ], + "green": [ + 0.375, + -0.25 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.140625 + ], + "green": [ + 0.640625, + -0.03125 + ] + } + }, + { + "wire": { + "red": [ + 0.375, + -0.25 + ], + "green": [ + 0.46875, + -0.078125 + ] + }, + "shadow": { + "red": [ + 0.640625, + -0.015625 + ], + "green": [ + 0.75, + 0.15625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + -0.359375 + ], + "green": [ + -0.40625, + -0.28125 + ] + }, + "shadow": { + "red": [ + 0.109375, + -0.125 + ], + "green": [ + -0.125, + -0.046875 + ] + } + }, + { + "wire": { + "red": [ + 0.484375, + 0.109375 + ], + "green": [ + 0.359375, + 0.25 + ] + }, + "shadow": { + "red": [ + 0.75, + 0.328125 + ], + "green": [ + 0.65625, + 0.484375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 56, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 54, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 64, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.234375 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.375, + -0.03125 + ], + "red_green_led_light_offset": [ + -0.328125, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 168, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 162, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.125, + 0.28125 + ], + "red_green_led_light_offset": [ + -0.234375, + 0.25 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-sequence", + "priority": "low", + "width": 52, + "height": 40, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0, + 0.015625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-base-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 56, + "height": 36, + "scale": 0.5, + "x": 112, + "y": 0, + "shift": [ + 0.171875, + 0.15625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence", + "priority": "low", + "width": 46, + "height": 26, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence", + "priority": "low", + "width": 60, + "height": 42, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + -0.046875, + 0.0625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence", + "priority": "low", + "width": 54, + "height": 50, + "scale": 0.5, + "x": 108, + "y": 0, + "shift": [ + -0.09375, + 0.015625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence", + "priority": "low", + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.0625, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-inserter-01-wire-shadow", + "priority": "low", + "draw_as_shadow": true, + "width": 64, + "height": 46, + "scale": 0.5, + "x": 128, + "y": 0, + "shift": [ + 0.34375, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.296875, + 0.203125 + ], + "red_green_led_light_offset": [ + -0.375, + 0.140625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_stack_control_input_signal": { + "type": "virtual", + "name": "signal-S" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "pipe": { + "type": "pipe", + "name": "pipe", + "icon": "entity:icons/pipe", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "pipe" + }, + "max_health": 100, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 80 + }, + { + "type": "impact", + "percent": 30 + } + ], + "fast_replaceable_group": "pipe", + "collision_box": [ + [ + -0.29, + -0.29 + ], + [ + 0.29, + 0.29 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "fluid_box": { + "base_area": 1, + "pipe_connections": [ + { + "position": [ + 0, + -1 + ] + }, + { + "position": [ + 1, + 0 + ] + }, + { + "position": [ + 0, + 1 + ] + }, + { + "position": [ + -1, + 0 + ] + } + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "pictures": { + "straight_vertical_single": { + "filename": "entity:pipe/pipe-straight-vertical-single", + "priority": "extra-high", + "width": 80, + "height": 80, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-vertical-single", + "priority": "extra-high", + "width": 160, + "height": 160, + "scale": 0.5 + } + }, + "straight_vertical": { + "filename": "entity:pipe/pipe-straight-vertical", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-vertical", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "straight_vertical_window": { + "filename": "entity:pipe/pipe-straight-vertical-window", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-vertical-window", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "straight_horizontal_window": { + "filename": "entity:pipe/pipe-straight-horizontal-window", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-horizontal-window", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "straight_horizontal": { + "filename": "entity:pipe/pipe-straight-horizontal", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-horizontal", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "corner_up_right": { + "filename": "entity:pipe/pipe-corner-up-right", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-corner-up-right", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "corner_up_left": { + "filename": "entity:pipe/pipe-corner-up-left", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-corner-up-left", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "corner_down_right": { + "filename": "entity:pipe/pipe-corner-down-right", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-corner-down-right", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "corner_down_left": { + "filename": "entity:pipe/pipe-corner-down-left", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-corner-down-left", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "t_up": { + "filename": "entity:pipe/pipe-t-up", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-t-up", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "t_down": { + "filename": "entity:pipe/pipe-t-down", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-t-down", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "t_right": { + "filename": "entity:pipe/pipe-t-right", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-t-right", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "t_left": { + "filename": "entity:pipe/pipe-t-left", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-t-left", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "cross": { + "filename": "entity:pipe/pipe-cross", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-cross", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "ending_up": { + "filename": "entity:pipe/pipe-ending-up", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-ending-up", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "ending_down": { + "filename": "entity:pipe/pipe-ending-down", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-ending-down", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "ending_right": { + "filename": "entity:pipe/pipe-ending-right", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-ending-right", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "ending_left": { + "filename": "entity:pipe/pipe-ending-left", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-ending-left", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "horizontal_window_background": { + "filename": "entity:pipe/pipe-horizontal-window-background", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-horizontal-window-background", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "vertical_window_background": { + "filename": "entity:pipe/pipe-vertical-window-background", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-vertical-window-background", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "fluid_background": { + "filename": "entity:pipe/fluid-background", + "priority": "extra-high", + "width": 32, + "height": 20, + "hr_version": { + "filename": "entity:pipe/hr-fluid-background", + "priority": "extra-high", + "width": 64, + "height": 40, + "scale": 0.5 + } + }, + "low_temperature_flow": { + "filename": "entity:pipe/fluid-flow-low-temperature", + "priority": "extra-high", + "width": 160, + "height": 18 + }, + "middle_temperature_flow": { + "filename": "entity:pipe/fluid-flow-medium-temperature", + "priority": "extra-high", + "width": 160, + "height": 18 + }, + "high_temperature_flow": { + "filename": "entity:pipe/fluid-flow-high-temperature", + "priority": "extra-high", + "width": 160, + "height": 18 + }, + "gas_flow": { + "filename": "entity:pipe/steam", + "priority": "extra-high", + "line_length": 10, + "width": 24, + "height": 15, + "frame_count": 60, + "axially_symmetrical": false, + "direction_count": 1, + "hr_version": { + "filename": "entity:pipe/hr-steam", + "priority": "extra-high", + "line_length": 10, + "width": 48, + "height": 30, + "frame_count": 60, + "axially_symmetrical": false, + "direction_count": 1 + } + } + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/pipe", + "volume": 0.85 + } + ], + "match_volume_to_activity": true, + "max_sounds_per_type": 3 + }, + "horizontal_window_bounding_box": [ + [ + -0.25, + -0.28125 + ], + [ + 0.25, + 0.15625 + ] + ], + "vertical_window_bounding_box": [ + [ + -0.28125, + -0.5 + ], + [ + 0.03125, + 0.125 + ] + ], + "size": { + "width": 1, + "height": 1 + } + }, + "radar": { + "type": "radar", + "name": "radar", + "icon": "entity:icons/radar", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "radar" + }, + "max_health": 250, + "corpse": "big-remnants", + "resistances": [ + { + "type": "fire", + "percent": 70 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "energy_per_sector": "10MJ", + "max_distance_of_sector_revealed": 14, + "max_distance_of_nearby_sector_revealed": 3, + "energy_per_nearby_scan": "250kJ", + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input" + }, + "energy_usage": "300kW", + "integration_patch": { + "filename": "entity:radar/radar-integration", + "priority": "low", + "width": 119, + "height": 108, + "apply_projection": false, + "direction_count": 1, + "repeat_count": 64, + "line_length": 1, + "shift": [ + 0.046875, + 0.125 + ], + "hr_version": { + "filename": "entity:radar/hr-radar-integration", + "priority": "low", + "width": 238, + "height": 216, + "apply_projection": false, + "direction_count": 1, + "repeat_count": 64, + "line_length": 1, + "shift": [ + 0.046875, + 0.125 + ], + "scale": 0.5 + } + }, + "pictures": { + "layers": [ + { + "filename": "entity:radar/radar", + "priority": "low", + "width": 98, + "height": 128, + "apply_projection": false, + "direction_count": 64, + "line_length": 8, + "shift": [ + 0.03125, + -0.5 + ], + "hr_version": { + "filename": "entity:radar/hr-radar", + "priority": "low", + "width": 196, + "height": 254, + "apply_projection": false, + "direction_count": 64, + "line_length": 8, + "shift": [ + 0.03125, + -0.5 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:radar/radar-shadow", + "priority": "low", + "width": 172, + "height": 94, + "apply_projection": false, + "direction_count": 64, + "line_length": 8, + "shift": [ + 1.21875, + 0.09375 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:radar/hr-radar-shadow", + "priority": "low", + "width": 343, + "height": 186, + "apply_projection": false, + "direction_count": 64, + "line_length": 8, + "shift": [ + 1.2265625, + 0.09375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/radar" + } + ], + "apparent_volume": 2 + }, + "radius_minimap_visualisation_color": { + "r": 0.059, + "g": 0.092, + "b": 0.235, + "a": 0.275 + }, + "size": { + "width": 3, + "height": 3 + } + }, + "small-lamp": { + "type": "lamp", + "name": "small-lamp", + "icon": "entity:icons/small-lamp", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "small-lamp" + }, + "max_health": 100, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.15, + -0.15 + ], + [ + 0.15, + 0.15 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "energy_source": { + "type": "electric", + "usage_priority": "lamp" + }, + "energy_usage_per_tick": "5KW", + "darkness_for_all_lamps_on": 0.5, + "darkness_for_all_lamps_off": 0.3, + "light": { + "intensity": 0.9, + "size": 40, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "light_when_colored": { + "intensity": 1, + "size": 6, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "glow_size": 6, + "glow_color_intensity": 0.135, + "picture_off": { + "layers": [ + { + "filename": "entity:small-lamp/lamp", + "priority": "high", + "width": 42, + "height": 36, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0, + 0.09375 + ], + "hr_version": { + "filename": "entity:small-lamp/hr-lamp", + "priority": "high", + "width": 83, + "height": 70, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.0078125, + 0.09375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:small-lamp/lamp-shadow", + "priority": "high", + "width": 38, + "height": 24, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.125, + 0.15625 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:small-lamp/hr-lamp-shadow", + "priority": "high", + "width": 76, + "height": 47, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.125, + 0.1484375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "picture_on": { + "filename": "entity:small-lamp/lamp-light", + "priority": "high", + "width": 46, + "height": 40, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0, + -0.21875 + ], + "hr_version": { + "filename": "entity:small-lamp/hr-lamp-light", + "priority": "high", + "width": 90, + "height": 78, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0, + -0.21875 + ], + "scale": 0.5 + } + }, + "signal_to_color_mapping": [ + { + "type": "virtual", + "name": "signal-red", + "color": { + "r": 1, + "g": 0, + "b": 0 + } + }, + { + "type": "virtual", + "name": "signal-green", + "color": { + "r": 0, + "g": 1, + "b": 0 + } + }, + { + "type": "virtual", + "name": "signal-blue", + "color": { + "r": 0, + "g": 0, + "b": 1 + } + }, + { + "type": "virtual", + "name": "signal-yellow", + "color": { + "r": 1, + "g": 1, + "b": 0 + } + }, + { + "type": "virtual", + "name": "signal-pink", + "color": { + "r": 1, + "g": 0, + "b": 1 + } + }, + { + "type": "virtual", + "name": "signal-cyan", + "color": { + "r": 0, + "g": 1, + "b": 1 + } + } + ], + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.4375, + 0.28125 + ], + "green": [ + 0.5, + 0.515625 + ] + }, + "shadow": { + "red": [ + 0.765625, + 0.5625 + ], + "green": [ + 0.546875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.140625, + 0.265625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.1875, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.140625, + 0.234375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.296875, + 0.359375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.140625, + 0.234375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.140625, + 0.234375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.140625, + 0.234375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.140625, + 0.234375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.171875, + 0.53125 + ], + "red_green_led_light_offset": [ + 0.15625, + 0.421875 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "pipe-to-ground": { + "type": "pipe-to-ground", + "name": "pipe-to-ground", + "icon": "entity:icons/pipe-to-ground", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "pipe-to-ground" + }, + "max_health": 150, + "corpse": "small-remnants", + "resistances": [ + { + "type": "fire", + "percent": 80 + }, + { + "type": "impact", + "percent": 40 + } + ], + "collision_box": [ + [ + -0.29, + -0.29 + ], + [ + 0.29, + 0.2 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "fluid_box": { + "base_area": 1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "position": [ + 0, + -1 + ] + }, + { + "position": [ + 0, + 1 + ], + "max_underground_distance": 10 + } + ] + }, + "underground_sprite": { + "filename": "entity:arrows/underground-lines", + "priority": "extra-high-no-scale", + "width": 64, + "height": 64, + "scale": 0.5 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "pictures": { + "0": { + "filename": "entity:pipe-to-ground/pipe-to-ground-up", + "priority": "high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-to-ground/hr-pipe-to-ground-up", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "2": { + "filename": "entity:pipe-to-ground/pipe-to-ground-right", + "priority": "high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-to-ground/hr-pipe-to-ground-right", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "4": { + "filename": "entity:pipe-to-ground/pipe-to-ground-down", + "priority": "high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-to-ground/hr-pipe-to-ground-down", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + "6": { + "filename": "entity:pipe-to-ground/pipe-to-ground-left", + "priority": "high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-to-ground/hr-pipe-to-ground-left", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + } + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "assembling-machine-1": { + "type": "assembling-machine", + "name": "assembling-machine-1", + "icon": "entity:icons/assembling-machine-1", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "assembling-machine-1" + }, + "max_health": 300, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "resistances": [ + { + "type": "fire", + "percent": 70 + } + ], + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "fast_replaceable_group": "assembling-machine", + "alert_icon_shift": [ + -0.09375, + -0.375 + ], + "animation": { + "layers": [ + { + "filename": "entity:assembling-machine-1/assembling-machine-1", + "priority": "high", + "width": 108, + "height": 114, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0, + 0.0625 + ], + "hr_version": { + "filename": "entity:assembling-machine-1/hr-assembling-machine-1", + "priority": "high", + "width": 214, + "height": 226, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0, + 0.0625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:assembling-machine-1/assembling-machine-1-shadow", + "priority": "high", + "width": 95, + "height": 83, + "frame_count": 1, + "line_length": 1, + "repeat_count": 32, + "draw_as_shadow": true, + "shift": [ + 0.265625, + 0.171875 + ], + "hr_version": { + "filename": "entity:assembling-machine-1/hr-assembling-machine-1-shadow", + "priority": "high", + "width": 190, + "height": 165, + "frame_count": 1, + "line_length": 1, + "repeat_count": 32, + "draw_as_shadow": true, + "shift": [ + 0.265625, + 0.15625 + ], + "scale": 0.5 + } + } + ] + }, + "crafting_categories": [ + "crafting" + ], + "crafting_speed": 0.5, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.03333333333333333 + }, + "energy_usage": "90kW", + "ingredient_count": 2, + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/assembling-machine-t1-1", + "volume": 0.8 + }, + { + "filename": "entity:sound/assembling-machine-t1-2", + "volume": 0.8 + } + ], + "idle_sound": { + "filename": "entity:sound/idle1", + "volume": 0.6 + }, + "apparent_volume": 1.5 + }, + "size": { + "width": 3, + "height": 3 + } + }, + "assembling-machine-2": { + "type": "assembling-machine", + "name": "assembling-machine-2", + "icon": "entity:icons/assembling-machine-2", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "assembling-machine-2" + }, + "max_health": 350, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "alert_icon_shift": [ + -0.09375, + -0.375 + ], + "resistances": [ + { + "type": "fire", + "percent": 70 + } + ], + "fluid_boxes": [ + { + "production_type": "input", + "pipe_picture": { + "0": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-N", + "priority": "extra-high", + "width": 35, + "height": 18, + "shift": [ + 0.078125, + 0.4375 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-N", + "priority": "extra-high", + "width": 71, + "height": 38, + "shift": [ + 0.0703125, + 0.421875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-E", + "priority": "extra-high", + "width": 20, + "height": 38, + "shift": [ + -0.78125, + 0.03125 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-E", + "priority": "extra-high", + "width": 42, + "height": 76, + "shift": [ + -0.765625, + 0.03125 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-S", + "priority": "extra-high", + "width": 44, + "height": 31, + "shift": [ + 0, + -0.984375 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-S", + "priority": "extra-high", + "width": 88, + "height": 61, + "shift": [ + 0, + -0.9765625 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-W", + "priority": "extra-high", + "width": 19, + "height": 37, + "shift": [ + 0.796875, + 0.046875 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-W", + "priority": "extra-high", + "width": 39, + "height": 73, + "shift": [ + 0.8046875, + 0.0390625 + ], + "scale": 0.5 + } + } + }, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": -1, + "pipe_connections": [ + { + "type": "input", + "position": [ + 0, + -2 + ] + } + ], + "secondary_draw_orders": { + "0": -1 + } + }, + { + "production_type": "output", + "pipe_picture": { + "0": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-N", + "priority": "extra-high", + "width": 35, + "height": 18, + "shift": [ + 0.078125, + 0.4375 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-N", + "priority": "extra-high", + "width": 71, + "height": 38, + "shift": [ + 0.0703125, + 0.421875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-E", + "priority": "extra-high", + "width": 20, + "height": 38, + "shift": [ + -0.78125, + 0.03125 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-E", + "priority": "extra-high", + "width": 42, + "height": 76, + "shift": [ + -0.765625, + 0.03125 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-S", + "priority": "extra-high", + "width": 44, + "height": 31, + "shift": [ + 0, + -0.984375 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-S", + "priority": "extra-high", + "width": 88, + "height": 61, + "shift": [ + 0, + -0.9765625 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-W", + "priority": "extra-high", + "width": 19, + "height": 37, + "shift": [ + 0.796875, + 0.046875 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-W", + "priority": "extra-high", + "width": 39, + "height": 73, + "shift": [ + 0.8046875, + 0.0390625 + ], + "scale": 0.5 + } + } + }, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": 1, + "pipe_connections": [ + { + "type": "output", + "position": [ + 0, + 2 + ] + } + ], + "secondary_draw_orders": { + "0": -1 + } + }, + true + ], + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "fast_replaceable_group": "assembling-machine", + "animation": { + "layers": [ + { + "filename": "entity:assembling-machine-2/assembling-machine-2", + "priority": "high", + "width": 108, + "height": 110, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0, + 0.125 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2", + "priority": "high", + "width": 214, + "height": 218, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0, + 0.125 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:assembling-machine-2/assembling-machine-2-shadow", + "priority": "high", + "width": 98, + "height": 82, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 0.375, + 0.15625 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-shadow", + "priority": "high", + "width": 196, + "height": 163, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 0.375, + 0.1484375 + ], + "scale": 0.5 + } + } + ] + }, + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/assembling-machine-t2-1", + "volume": 0.8 + }, + { + "filename": "entity:sound/assembling-machine-t2-2", + "volume": 0.8 + } + ], + "idle_sound": { + "filename": "entity:sound/idle1", + "volume": 0.6 + }, + "apparent_volume": 1.5 + }, + "crafting_categories": [ + "crafting", + "advanced-crafting", + "crafting-with-fluid" + ], + "crafting_speed": 0.75, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.016 + }, + "energy_usage": "150kW", + "ingredient_count": 4, + "module_specification": { + "module_slots": 2 + }, + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "assembling-machine-3": { + "type": "assembling-machine", + "name": "assembling-machine-3", + "icon": "entity:icons/assembling-machine-3", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "assembling-machine-3" + }, + "max_health": 400, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "alert_icon_shift": [ + -0.09375, + -0.375 + ], + "resistances": [ + { + "type": "fire", + "percent": 70 + } + ], + "fluid_boxes": [ + { + "production_type": "input", + "pipe_picture": { + "0": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-N", + "priority": "extra-high", + "width": 35, + "height": 18, + "shift": [ + 0.078125, + 0.4375 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-N", + "priority": "extra-high", + "width": 71, + "height": 38, + "shift": [ + 0.0703125, + 0.421875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-E", + "priority": "extra-high", + "width": 20, + "height": 38, + "shift": [ + -0.78125, + 0.03125 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-E", + "priority": "extra-high", + "width": 42, + "height": 76, + "shift": [ + -0.765625, + 0.03125 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-S", + "priority": "extra-high", + "width": 44, + "height": 31, + "shift": [ + 0, + -0.984375 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-S", + "priority": "extra-high", + "width": 88, + "height": 61, + "shift": [ + 0, + -0.9765625 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-W", + "priority": "extra-high", + "width": 19, + "height": 37, + "shift": [ + 0.796875, + 0.046875 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-W", + "priority": "extra-high", + "width": 39, + "height": 73, + "shift": [ + 0.8046875, + 0.0390625 + ], + "scale": 0.5 + } + } + }, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": -1, + "pipe_connections": [ + { + "type": "input", + "position": [ + 0, + -2 + ] + } + ], + "secondary_draw_orders": { + "0": -1 + } + }, + { + "production_type": "output", + "pipe_picture": { + "0": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-N", + "priority": "extra-high", + "width": 35, + "height": 18, + "shift": [ + 0.078125, + 0.4375 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-N", + "priority": "extra-high", + "width": 71, + "height": 38, + "shift": [ + 0.0703125, + 0.421875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-E", + "priority": "extra-high", + "width": 20, + "height": 38, + "shift": [ + -0.78125, + 0.03125 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-E", + "priority": "extra-high", + "width": 42, + "height": 76, + "shift": [ + -0.765625, + 0.03125 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-S", + "priority": "extra-high", + "width": 44, + "height": 31, + "shift": [ + 0, + -0.984375 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-S", + "priority": "extra-high", + "width": 88, + "height": 61, + "shift": [ + 0, + -0.9765625 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:assembling-machine-3/assembling-machine-3-pipe-W", + "priority": "extra-high", + "width": 19, + "height": 37, + "shift": [ + 0.796875, + 0.046875 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-pipe-W", + "priority": "extra-high", + "width": 39, + "height": 73, + "shift": [ + 0.8046875, + 0.0390625 + ], + "scale": 0.5 + } + } + }, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": 1, + "pipe_connections": [ + { + "type": "output", + "position": [ + 0, + 2 + ] + } + ], + "secondary_draw_orders": { + "0": -1 + } + }, + true + ], + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/assembling-machine-t3-1", + "volume": 0.8 + }, + { + "filename": "entity:sound/assembling-machine-t3-2", + "volume": 0.8 + } + ], + "idle_sound": { + "filename": "entity:sound/idle1", + "volume": 0.6 + }, + "apparent_volume": 1.5 + }, + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "drawing_box": [ + [ + -1.5, + -1.7 + ], + [ + 1.5, + 1.5 + ] + ], + "fast_replaceable_group": "assembling-machine", + "animation": { + "layers": [ + { + "filename": "entity:assembling-machine-3/assembling-machine-3", + "priority": "high", + "width": 108, + "height": 119, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0, + -0.015625 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3", + "priority": "high", + "width": 214, + "height": 237, + "frame_count": 32, + "line_length": 8, + "shift": [ + 0, + -0.0234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:assembling-machine-3/assembling-machine-3-shadow", + "priority": "high", + "width": 130, + "height": 82, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 0.875, + 0.125 + ], + "hr_version": { + "filename": "entity:assembling-machine-3/hr-assembling-machine-3-shadow", + "priority": "high", + "width": 260, + "height": 162, + "frame_count": 32, + "line_length": 8, + "draw_as_shadow": true, + "shift": [ + 0.875, + 0.125 + ], + "scale": 0.5 + } + } + ] + }, + "crafting_categories": [ + "crafting", + "advanced-crafting", + "crafting-with-fluid" + ], + "crafting_speed": 1.25, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.008571428571428572 + }, + "energy_usage": "210kW", + "ingredient_count": 6, + "module_specification": { + "module_slots": 4 + }, + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "oil-refinery": { + "type": "assembling-machine", + "name": "oil-refinery", + "icon": "entity:icons/oil-refinery", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "oil-refinery" + }, + "max_health": 350, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -2.4, + -2.4 + ], + [ + 2.4, + 2.4 + ] + ], + "selection_box": [ + [ + -2.5, + -2.5 + ], + [ + 2.5, + 2.5 + ] + ], + "drawing_box": [ + [ + -2.5, + -2.8 + ], + [ + 2.5, + 2.5 + ] + ], + "module_specification": { + "module_slots": 3 + }, + "scale_entity_info_icon": true, + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "crafting_categories": [ + "oil-processing" + ], + "crafting_speed": 1, + "has_backer_name": true, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.008571428571428572 + }, + "energy_usage": "420kW", + "ingredient_count": 4, + "animation": { + "0": { + "layers": [ + { + "filename": "entity:oil-refinery/oil-refinery", + "priority": "high", + "x": 0, + "width": 337, + "height": 255, + "frame_count": 1, + "shift": [ + 2.515625, + 0.484375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery", + "priority": "high", + "x": 0, + "width": 386, + "height": 430, + "frame_count": 1, + "shift": [ + 0, + -0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:oil-refinery/oil-refinery-shadow", + "priority": "high", + "x": 0, + "width": 337, + "height": 213, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery-shadow", + "priority": "high", + "x": 0, + "width": 674, + "height": 426, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:oil-refinery/oil-refinery", + "priority": "high", + "x": 337, + "width": 337, + "height": 255, + "frame_count": 1, + "shift": [ + 2.515625, + 0.484375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery", + "priority": "high", + "x": 386, + "width": 386, + "height": 430, + "frame_count": 1, + "shift": [ + 0, + -0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:oil-refinery/oil-refinery-shadow", + "priority": "high", + "x": 337, + "width": 337, + "height": 213, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery-shadow", + "priority": "high", + "x": 674, + "width": 674, + "height": 426, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:oil-refinery/oil-refinery", + "priority": "high", + "x": 674, + "width": 337, + "height": 255, + "frame_count": 1, + "shift": [ + 2.515625, + 0.484375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery", + "priority": "high", + "x": 772, + "width": 386, + "height": 430, + "frame_count": 1, + "shift": [ + 0, + -0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:oil-refinery/oil-refinery-shadow", + "priority": "high", + "x": 674, + "width": 337, + "height": 213, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery-shadow", + "priority": "high", + "x": 1348, + "width": 674, + "height": 426, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:oil-refinery/oil-refinery", + "priority": "high", + "x": 1011, + "width": 337, + "height": 255, + "frame_count": 1, + "shift": [ + 2.515625, + 0.484375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery", + "priority": "high", + "x": 1158, + "width": 386, + "height": 430, + "frame_count": 1, + "shift": [ + 0, + -0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:oil-refinery/oil-refinery-shadow", + "priority": "high", + "x": 1011, + "width": 337, + "height": 213, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery-shadow", + "priority": "high", + "x": 2022, + "width": 674, + "height": 426, + "frame_count": 1, + "shift": [ + 2.578125, + 0.828125 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "working_visualisations": [ + { + "north_position": [ + 1.0625, + -2.03125 + ], + "east_position": [ + -1.625, + -1.90625 + ], + "south_position": [ + -1.84375, + -2.5625 + ], + "west_position": [ + 1.78125, + -1.8125 + ], + "animation": { + "filename": "entity:oil-refinery/oil-refinery-fire", + "line_length": 10, + "width": 20, + "height": 40, + "frame_count": 60, + "animation_speed": 0.75, + "shift": [ + 0, + -0.4375 + ], + "hr_version": { + "filename": "entity:oil-refinery/hr-oil-refinery-fire", + "line_length": 10, + "width": 40, + "height": 81, + "frame_count": 60, + "animation_speed": 0.75, + "scale": 0.5, + "shift": [ + 0, + -0.4453125 + ] + } + }, + "light": { + "intensity": 0.4, + "size": 6, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + } + } + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/oil-refinery" + }, + "idle_sound": { + "filename": "entity:sound/idle1", + "volume": 0.6 + }, + "apparent_volume": 2.5 + }, + "fluid_boxes": [ + { + "production_type": "input", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": -1, + "pipe_connections": [ + { + "type": "input", + "position": [ + -1, + 3 + ] + } + ] + }, + { + "production_type": "input", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": -1, + "pipe_connections": [ + { + "type": "input", + "position": [ + 1, + 3 + ] + } + ] + }, + { + "production_type": "output", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_level": 1, + "pipe_connections": [ + { + "position": [ + -2, + -3 + ] + } + ] + }, + { + "production_type": "output", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_level": 1, + "pipe_connections": [ + { + "position": [ + 0, + -3 + ] + } + ] + }, + { + "production_type": "output", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_level": 1, + "pipe_connections": [ + { + "position": [ + 2, + -3 + ] + } + ] + } + ], + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "size": { + "width": 5, + "height": 5 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "chemical-plant": { + "type": "assembling-machine", + "name": "chemical-plant", + "icon": "entity:icons/chemical-plant", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "chemical-plant" + }, + "max_health": 300, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "drawing_box": [ + [ + -1.5, + -1.9 + ], + [ + 1.5, + 1.5 + ] + ], + "module_specification": { + "module_slots": 3 + }, + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "animation": { + "0": { + "layers": [ + { + "filename": "entity:chemical-plant/chemical-plant", + "priority": "high", + "x": 0, + "width": 122, + "height": 134, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant", + "priority": "high", + "x": 0, + "width": 244, + "height": 268, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:chemical-plant/chemical-plant-shadow", + "priority": "high", + "x": 0, + "width": 175, + "height": 110, + "frame_count": 1, + "shift": [ + 0.984375, + 0.34375 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant-shadow", + "priority": "high", + "x": 0, + "width": 350, + "height": 219, + "frame_count": 1, + "shift": [ + 0.984375, + 0.3359375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:chemical-plant/chemical-plant", + "priority": "high", + "x": 122, + "width": 122, + "height": 134, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant", + "priority": "high", + "x": 244, + "width": 244, + "height": 268, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:chemical-plant/chemical-plant-shadow", + "priority": "high", + "x": 175, + "width": 175, + "height": 110, + "frame_count": 1, + "shift": [ + 0.984375, + 0.34375 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant-shadow", + "priority": "high", + "x": 350, + "width": 350, + "height": 219, + "frame_count": 1, + "shift": [ + 0.984375, + 0.3359375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:chemical-plant/chemical-plant", + "priority": "high", + "x": 244, + "width": 122, + "height": 134, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant", + "priority": "high", + "x": 488, + "width": 244, + "height": 268, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:chemical-plant/chemical-plant-shadow", + "priority": "high", + "x": 350, + "width": 175, + "height": 110, + "frame_count": 1, + "shift": [ + 0.984375, + 0.34375 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant-shadow", + "priority": "high", + "x": 700, + "width": 350, + "height": 219, + "frame_count": 1, + "shift": [ + 0.984375, + 0.3359375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:chemical-plant/chemical-plant", + "priority": "high", + "x": 366, + "width": 122, + "height": 134, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant", + "priority": "high", + "x": 732, + "width": 244, + "height": 268, + "frame_count": 1, + "shift": [ + -0.15625, + -0.140625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:chemical-plant/chemical-plant-shadow", + "priority": "high", + "x": 525, + "width": 175, + "height": 110, + "frame_count": 1, + "shift": [ + 0.984375, + 0.34375 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:chemical-plant/hr-chemical-plant-shadow", + "priority": "high", + "x": 1050, + "width": 350, + "height": 219, + "frame_count": 1, + "shift": [ + 0.984375, + 0.3359375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "working_visualisations": [ + { + "north_position": [ + 0.9375, + -0.75 + ], + "west_position": [ + 0.03125, + -1.546875 + ], + "south_position": [ + -0.9375, + -1.5 + ], + "east_position": [ + -0.34375, + -0.03125 + ], + "apply_recipe_tint": "primary", + "animation": { + "filename": "entity:chemical-plant/boiling-green-patch", + "frame_count": 32, + "width": 15, + "height": 10, + "animation_speed": 0.5, + "hr_version": { + "filename": "entity:chemical-plant/hr-boiling-green-patch", + "frame_count": 32, + "width": 30, + "height": 20, + "animation_speed": 0.5, + "scale": 0.5 + } + } + }, + { + "north_position": [ + 0.9375, + -0.75 + ], + "west_position": [ + 0.03125, + -1.546875 + ], + "south_position": [ + -0.9375, + -1.5 + ], + "east_position": [ + -0.34375, + -0.03125 + ], + "apply_recipe_tint": "secondary", + "animation": { + "filename": "entity:chemical-plant/boiling-green-patch-mask", + "frame_count": 32, + "width": 15, + "height": 10, + "animation_speed": 0.5, + "hr_version": { + "filename": "entity:chemical-plant/hr-boiling-green-patch-mask", + "frame_count": 32, + "width": 30, + "height": 20, + "animation_speed": 0.5, + "scale": 0.5 + } + } + }, + { + "apply_recipe_tint": "tertiary", + "north_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "north_animation": { + "filename": "entity:chemical-plant/boiling-window-green-patch", + "frame_count": 1, + "width": 87, + "height": 60, + "shift": [ + 0, + -0.15625 + ], + "hr_version": { + "filename": "entity:chemical-plant/hr-boiling-window-green-patch", + "x": 0, + "frame_count": 1, + "width": 174, + "height": 119, + "shift": [ + 0, + -0.1640625 + ], + "scale": 0.5 + } + }, + "east_animation": { + "filename": "entity:chemical-plant/boiling-window-green-patch", + "x": 87, + "frame_count": 1, + "width": 87, + "height": 60, + "shift": [ + 0, + -0.15625 + ], + "hr_version": { + "filename": "entity:chemical-plant/hr-boiling-window-green-patch", + "x": 174, + "frame_count": 1, + "width": 174, + "height": 119, + "shift": [ + 0, + -0.1640625 + ], + "scale": 0.5 + } + }, + "south_animation": { + "filename": "entity:chemical-plant/boiling-window-green-patch", + "x": 174, + "frame_count": 1, + "width": 87, + "height": 60, + "shift": [ + 0, + -0.15625 + ], + "hr_version": { + "filename": "entity:chemical-plant/hr-boiling-window-green-patch", + "x": 348, + "frame_count": 1, + "width": 174, + "height": 119, + "shift": [ + 0, + -0.1640625 + ], + "scale": 0.5 + } + } + } + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/chemical-plant", + "volume": 0.8 + } + ], + "idle_sound": { + "filename": "entity:sound/idle1", + "volume": 0.6 + }, + "apparent_volume": 1.5 + }, + "crafting_speed": 1.25, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.008571428571428572 + }, + "energy_usage": "210kW", + "ingredient_count": 4, + "crafting_categories": [ + "chemistry" + ], + "fluid_boxes": [ + { + "production_type": "input", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": -1, + "pipe_connections": [ + { + "type": "input", + "position": [ + -1, + -2 + ] + } + ] + }, + { + "production_type": "input", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 10, + "base_level": -1, + "pipe_connections": [ + { + "type": "input", + "position": [ + 1, + -2 + ] + } + ] + }, + { + "production_type": "output", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_level": 1, + "pipe_connections": [ + { + "position": [ + -1, + 2 + ] + } + ] + }, + { + "production_type": "output", + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_level": 1, + "pipe_connections": [ + { + "position": [ + 1, + 2 + ] + } + ] + } + ], + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "centrifuge": { + "type": "assembling-machine", + "name": "centrifuge", + "icon": "entity:icons/centrifuge", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "centrifuge" + }, + "max_health": 350, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "resistances": [ + { + "type": "fire", + "percent": 70 + } + ], + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "drawing_box": [ + [ + -1.5, + -2.2 + ], + [ + 1.5, + 1.5 + ] + ], + "always_draw_idle_animation": true, + "idle_animation": { + "layers": [ + { + "filename": "entity:centrifuge/centrifuge-C", + "priority": "high", + "line_length": 8, + "width": 119, + "height": 107, + "frame_count": 64, + "shift": [ + -0.015625, + -0.828125 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-C", + "priority": "high", + "scale": 0.5, + "line_length": 8, + "width": 237, + "height": 214, + "frame_count": 64, + "shift": [ + -0.0078125, + -0.828125 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-C-shadow", + "draw_as_shadow": true, + "priority": "high", + "line_length": 8, + "width": 132, + "height": 74, + "frame_count": 64, + "shift": [ + 0.625, + -0.3125 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-C-shadow", + "draw_as_shadow": true, + "priority": "high", + "scale": 0.5, + "line_length": 8, + "width": 279, + "height": 152, + "frame_count": 64, + "shift": [ + 0.5234375, + -0.3125 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-B", + "priority": "high", + "line_length": 8, + "width": 78, + "height": 117, + "frame_count": 64, + "shift": [ + 0.71875, + 0.203125 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-B", + "priority": "high", + "scale": 0.5, + "line_length": 8, + "width": 156, + "height": 234, + "frame_count": 64, + "shift": [ + 0.71875, + 0.203125 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-B-shadow", + "draw_as_shadow": true, + "priority": "high", + "line_length": 8, + "width": 124, + "height": 74, + "frame_count": 64, + "shift": [ + 1.96875, + 0.5 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-B-shadow", + "draw_as_shadow": true, + "priority": "high", + "scale": 0.5, + "line_length": 8, + "width": 251, + "height": 149, + "frame_count": 64, + "shift": [ + 1.9765625, + 0.4765625 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-A", + "priority": "high", + "line_length": 8, + "width": 70, + "height": 123, + "frame_count": 64, + "shift": [ + -0.8125, + 0.109375 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-A", + "priority": "high", + "scale": 0.5, + "line_length": 8, + "width": 139, + "height": 246, + "frame_count": 64, + "shift": [ + -0.8203125, + 0.109375 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-A-shadow", + "priority": "high", + "draw_as_shadow": true, + "line_length": 8, + "width": 108, + "height": 54, + "frame_count": 64, + "shift": [ + 0.1875, + 0.84375 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-A-shadow", + "priority": "high", + "draw_as_shadow": true, + "scale": 0.5, + "line_length": 8, + "width": 230, + "height": 124, + "frame_count": 64, + "shift": [ + 0.265625, + 0.734375 + ] + } + } + ] + }, + "animation": { + "layers": [ + { + "filename": "entity:centrifuge/centrifuge-C-light", + "priority": "high", + "blend_mode": "additive", + "line_length": 8, + "width": 96, + "height": 104, + "frame_count": 64, + "shift": [ + 0, + -0.84375 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-C-light", + "priority": "high", + "scale": 0.5, + "blend_mode": "additive", + "line_length": 8, + "width": 190, + "height": 207, + "frame_count": 64, + "shift": [ + 0, + -0.8515625 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-B-light", + "priority": "high", + "blend_mode": "additive", + "line_length": 8, + "width": 65, + "height": 103, + "frame_count": 64, + "shift": [ + 0.515625, + 0.015625 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-B-light", + "priority": "high", + "scale": 0.5, + "blend_mode": "additive", + "line_length": 8, + "width": 131, + "height": 206, + "frame_count": 64, + "shift": [ + 0.5234375, + 0.015625 + ] + } + }, + { + "filename": "entity:centrifuge/centrifuge-A-light", + "priority": "high", + "blend_mode": "additive", + "line_length": 8, + "width": 55, + "height": 98, + "frame_count": 64, + "shift": [ + -0.734375, + -0.0625 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-A-light", + "priority": "high", + "scale": 0.5, + "blend_mode": "additive", + "line_length": 8, + "width": 108, + "height": 197, + "frame_count": 64, + "shift": [ + -0.734375, + -0.0546875 + ] + } + } + ] + }, + "working_visualisations": [ + { + "effect": "uranium-glow", + "light": { + "intensity": 0.6, + "size": 9.9, + "shift": [ + 0, + 0 + ], + "color": { + "r": 0, + "g": 1, + "b": 0 + } + } + } + ], + "working_visualisations_disabled": [ + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "animation": { + "filename": "entity:centrifuge/centrifuge-C-light", + "priority": "high", + "blend_mode": "additive", + "line_length": 8, + "width": 96, + "height": 104, + "frame_count": 64, + "shift": [ + 0, + -0.84375 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-C-light", + "priority": "high", + "scale": 0.5, + "blend_mode": "additive", + "line_length": 8, + "width": 190, + "height": 207, + "frame_count": 64, + "shift": [ + 0, + -0.8515625 + ] + } + } + }, + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "animation": { + "filename": "entity:centrifuge/centrifuge-B-light", + "priority": "high", + "blend_mode": "additive", + "line_length": 8, + "width": 65, + "height": 103, + "frame_count": 64, + "shift": [ + 0.515625, + 0.015625 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-B-light", + "priority": "high", + "scale": 0.5, + "blend_mode": "additive", + "line_length": 8, + "width": 131, + "height": 206, + "frame_count": 64, + "shift": [ + 0.5234375, + 0.015625 + ] + } + } + }, + { + "north_position": [ + 0, + 0 + ], + "east_position": [ + 0, + 0 + ], + "south_position": [ + 0, + 0 + ], + "west_position": [ + 0, + 0 + ], + "animation": { + "filename": "entity:centrifuge/centrifuge-A-light", + "priority": "high", + "blend_mode": "additive", + "line_length": 8, + "width": 55, + "height": 98, + "frame_count": 64, + "shift": [ + -0.734375, + -0.0625 + ], + "hr_version": { + "filename": "entity:centrifuge/hr-centrifuge-A-light", + "priority": "high", + "scale": 0.5, + "blend_mode": "additive", + "line_length": 8, + "width": 108, + "height": 197, + "frame_count": 64, + "shift": [ + -0.734375, + -0.0546875 + ] + } + } + } + ], + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": [ + { + "filename": "entity:sound/assembling-machine-t2-1", + "volume": 0.8 + }, + { + "filename": "entity:sound/assembling-machine-t2-2", + "volume": 0.8 + } + ], + "idle_sound": { + "filename": "entity:sound/idle1", + "volume": 0.6 + }, + "apparent_volume": 1.5 + }, + "crafting_speed": 0.75, + "crafting_categories": [ + "centrifuging" + ], + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.016 + }, + "energy_usage": "350kW", + "ingredient_count": 2, + "module_specification": { + "module_slots": 2 + }, + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "size": { + "width": 3, + "height": 3 + } + }, + "stone-wall": { + "type": "wall", + "name": "stone-wall", + "icon": "entity:icons/stone-wall", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "collision_box": [ + [ + -0.29, + -0.29 + ], + [ + 0.29, + 0.29 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "minable": { + "mining_time": 0.5, + "result": "stone-wall" + }, + "fast_replaceable_group": "wall", + "max_health": 350, + "repair_speed_modifier": 2, + "corpse": "wall-remnants", + "repair_sound": { + "filename": "entity:sound/manual-repair-simple" + }, + "mined_sound": { + "filename": "entity:sound/deconstruct-bricks" + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-stone-impact", + "volume": 1 + }, + "connected_gate_visualization": { + "filename": "entity:arrows/underground-lines", + "priority": "high", + "width": 64, + "height": 64, + "scale": 0.5 + }, + "resistances": [ + { + "type": "physical", + "decrease": 3, + "percent": 20 + }, + { + "type": "impact", + "decrease": 45, + "percent": 60 + }, + { + "type": "explosion", + "decrease": 10, + "percent": 30 + }, + { + "type": "fire", + "percent": 100 + }, + { + "type": "laser", + "percent": 70 + } + ], + "pictures": { + "single": { + "layers": [ + { + "filename": "entity:stone-wall/wall-single", + "priority": "extra-high", + "width": 22, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-single-shadow", + "priority": "extra-high", + "width": 47, + "height": 32, + "shift": [ + 0.359375, + 0.5 + ], + "draw_as_shadow": true + } + ] + }, + "straight_vertical": [ + { + "layers": [ + { + "filename": "entity:stone-wall/wall-straight-vertical-1", + "priority": "extra-high", + "width": 22, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-straight-vertical-shadow", + "priority": "extra-high", + "width": 47, + "height": 60, + "shift": [ + 0.390625, + 0.625 + ], + "draw_as_shadow": true + } + ] + }, + { + "layers": [ + { + "filename": "entity:stone-wall/wall-straight-vertical-2", + "priority": "extra-high", + "width": 22, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-straight-vertical-shadow", + "priority": "extra-high", + "width": 47, + "height": 60, + "shift": [ + 0.390625, + 0.625 + ], + "draw_as_shadow": true + } + ] + }, + { + "layers": [ + { + "filename": "entity:stone-wall/wall-straight-vertical-3", + "priority": "extra-high", + "width": 22, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-straight-vertical-shadow", + "priority": "extra-high", + "width": 47, + "height": 60, + "shift": [ + 0.390625, + 0.625 + ], + "draw_as_shadow": true + } + ] + } + ], + "straight_horizontal": [ + { + "layers": [ + { + "filename": "entity:stone-wall/wall-straight-horizontal-1", + "priority": "extra-high", + "width": 32, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-straight-horizontal-shadow", + "priority": "extra-high", + "width": 59, + "height": 32, + "shift": [ + 0.421875, + 0.5 + ], + "draw_as_shadow": true + } + ] + }, + { + "layers": [ + { + "filename": "entity:stone-wall/wall-straight-horizontal-2", + "priority": "extra-high", + "width": 32, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-straight-horizontal-shadow", + "priority": "extra-high", + "width": 59, + "height": 32, + "shift": [ + 0.421875, + 0.5 + ], + "draw_as_shadow": true + } + ] + }, + { + "layers": [ + { + "filename": "entity:stone-wall/wall-straight-horizontal-3", + "priority": "extra-high", + "width": 32, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-straight-horizontal-shadow", + "priority": "extra-high", + "width": 59, + "height": 32, + "shift": [ + 0.421875, + 0.5 + ], + "draw_as_shadow": true + } + ] + } + ], + "corner_right_down": { + "layers": [ + { + "filename": "entity:stone-wall/wall-corner-right-down", + "priority": "extra-high", + "width": 27, + "height": 42, + "shift": [ + 0.078125, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-corner-right-down-shadow", + "priority": "extra-high", + "width": 53, + "height": 61, + "shift": [ + 0.484375, + 0.640625 + ], + "draw_as_shadow": true + } + ] + }, + "corner_left_down": { + "layers": [ + { + "filename": "entity:stone-wall/wall-corner-left-down", + "priority": "extra-high", + "width": 27, + "height": 42, + "shift": [ + -0.078125, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-corner-left-down-shadow", + "priority": "extra-high", + "width": 53, + "height": 60, + "shift": [ + 0.328125, + 0.640625 + ], + "draw_as_shadow": true + } + ] + }, + "t_up": { + "layers": [ + { + "filename": "entity:stone-wall/wall-t-down", + "priority": "extra-high", + "width": 32, + "height": 42, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-t-down-shadow", + "priority": "extra-high", + "width": 71, + "height": 61, + "shift": [ + 0.546875, + 0.640625 + ], + "draw_as_shadow": true + } + ] + }, + "ending_right": { + "layers": [ + { + "filename": "entity:stone-wall/wall-ending-right", + "priority": "extra-high", + "width": 27, + "height": 42, + "shift": [ + 0.078125, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-ending-right-shadow", + "priority": "extra-high", + "width": 53, + "height": 32, + "shift": [ + 0.484375, + 0.5 + ], + "draw_as_shadow": true + } + ] + }, + "ending_left": { + "layers": [ + { + "filename": "entity:stone-wall/wall-ending-left", + "priority": "extra-high", + "width": 27, + "height": 42, + "shift": [ + -0.078125, + -0.15625 + ] + }, + { + "filename": "entity:stone-wall/wall-ending-left-shadow", + "priority": "extra-high", + "width": 53, + "height": 32, + "shift": [ + 0.328125, + 0.5 + ], + "draw_as_shadow": true + } + ] + }, + "water_connection_patch": { + "sheets": [ + { + "filename": "entity:stone-wall/wall-patch", + "priority": "extra-high", + "width": 52, + "height": 68, + "shift": [ + 0, + -0.0625 + ] + }, + { + "filename": "entity:stone-wall/wall-patch-shadow", + "priority": "extra-high", + "draw_as_shadow": true, + "width": 74, + "height": 96, + "shift": [ + 0.1875, + 0.40625 + ] + } + ] + } + }, + "wall_diode_green": { + "filename": "entity:gate/wall-diode-green", + "width": 21, + "height": 22, + "shift": [ + 0, + -0.78125 + ] + }, + "wall_diode_green_light": { + "minimum_darkness": 0.3, + "color": { + "g": 1 + }, + "shift": [ + 0, + -0.78125 + ], + "size": 1, + "intensity": 0.3 + }, + "wall_diode_red": { + "filename": "entity:gate/wall-diode-red", + "width": 21, + "height": 22, + "shift": [ + 0, + -0.78125 + ] + }, + "wall_diode_red_light": { + "minimum_darkness": 0.3, + "color": { + "r": 1 + }, + "shift": [ + 0, + -0.78125 + ], + "size": 1, + "intensity": 0.3 + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + -0.34375, + -0.640625 + ], + "green": [ + -0.265625, + -0.84375 + ] + }, + "shadow": { + "red": [ + 0.625, + 0.875 + ], + "green": [ + 0.71875, + 0.6875 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 312, + "y": 0, + "shift": [ + 0, + -0.484375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + 0, + -0.515625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 420, + "y": 0, + "shift": [ + 0.15625, + -0.390625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 360, + "y": 0, + "shift": [ + 0, + -0.515625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 276, + "y": 0, + "shift": [ + 0, + -0.515625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + 0, + -0.515625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + 0, + -0.515625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.015625, + -0.8125 + ], + "red_green_led_light_offset": [ + -0.015625, + -0.6875 + ] + }, + "circuit_wire_max_distance": 9, + "default_output_signal": { + "type": "virtual", + "name": "signal-G" + }, + "size": { + "width": 1, + "height": 1 + } + }, + "electric-mining-drill": { + "type": "mining-drill", + "name": "electric-mining-drill", + "icon": "entity:icons/electric-mining-drill", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "electric-mining-drill" + }, + "max_health": 300, + "resource_categories": [ + "basic-solid" + ], + "corpse": "big-remnants", + "collision_box": [ + [ + -1.4, + -1.4 + ], + [ + 1.4, + 1.4 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "input_fluid_box": { + "production_type": "input-output", + "pipe_picture": { + "0": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-N", + "priority": "extra-high", + "width": 35, + "height": 18, + "shift": [ + 0.078125, + 0.4375 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-N", + "priority": "extra-high", + "width": 71, + "height": 38, + "shift": [ + 0.0703125, + 0.421875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-E", + "priority": "extra-high", + "width": 20, + "height": 38, + "shift": [ + -0.78125, + 0.03125 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-E", + "priority": "extra-high", + "width": 42, + "height": 76, + "shift": [ + -0.765625, + 0.03125 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-S", + "priority": "extra-high", + "width": 44, + "height": 31, + "shift": [ + 0, + -0.984375 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-S", + "priority": "extra-high", + "width": 88, + "height": 61, + "shift": [ + 0, + -0.9765625 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:assembling-machine-2/assembling-machine-2-pipe-W", + "priority": "extra-high", + "width": 19, + "height": 37, + "shift": [ + 0.796875, + 0.046875 + ], + "hr_version": { + "filename": "entity:assembling-machine-2/hr-assembling-machine-2-pipe-W", + "priority": "extra-high", + "width": 39, + "height": 73, + "shift": [ + 0.8046875, + 0.0390625 + ], + "scale": 0.5 + } + } + }, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 1, + "height": 2, + "base_level": -1, + "pipe_connections": [ + { + "position": [ + -2, + 0 + ] + }, + { + "position": [ + 2, + 0 + ] + }, + { + "position": [ + 0, + 2 + ] + } + ] + }, + "working_sound": { + "sound": { + "filename": "entity:sound/electric-mining-drill", + "volume": 0.75 + }, + "apparent_volume": 1.5 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "animations": { + "0": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N", + "line_length": 8, + "width": 98, + "height": 113, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0, + -0.265625 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N", + "line_length": 8, + "width": 196, + "height": 226, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0, + -0.25 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "2": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E", + "line_length": 8, + "width": 105, + "height": 98, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.109375, + -0.03125 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E", + "line_length": 8, + "width": 211, + "height": 197, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.1171875, + -0.0390625 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "4": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S", + "line_length": 8, + "width": 98, + "height": 109, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0, + -0.046875 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S", + "line_length": 8, + "width": 196, + "height": 219, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0, + -0.0390625 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "6": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W", + "line_length": 8, + "width": 105, + "height": 98, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.109375, + -0.03125 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W", + "line_length": 8, + "width": 211, + "height": 197, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.1171875, + -0.0234375 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + } + }, + "shadow_animations": { + "0": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 101, + "height": 111, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.046875, + -0.234375 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 201, + "height": 223, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.0390625, + -0.2265625 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "2": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 110, + "height": 97, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.1875, + -0.015625 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 221, + "height": 195, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.1953125, + -0.0078125 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "4": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 100, + "height": 103, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.03125, + 0.078125 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 200, + "height": 206, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.03125, + 0.078125 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "6": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 114, + "height": 97, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.03125, + -0.015625 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-drill-shadow", + "flags": [ + "shadow" + ], + "line_length": 8, + "width": 229, + "height": 195, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.0390625, + -0.0078125 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + } + }, + "input_fluid_patch_sprites": { + "0": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-patch", + "line_length": 1, + "width": 100, + "height": 111, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0, + -0.203125 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-patch", + "line_length": 1, + "width": 200, + "height": 222, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.015625, + -0.203125 + ], + "scale": 0.5 + } + }, + "2": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-patch", + "line_length": 1, + "width": 100, + "height": 110, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0, + -0.1875 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-patch", + "line_length": 1, + "width": 200, + "height": 219, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0, + -0.1796875 + ], + "scale": 0.5 + } + }, + "4": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-patch", + "line_length": 1, + "width": 100, + "height": 113, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0, + -0.234375 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-patch", + "line_length": 1, + "width": 200, + "height": 226, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.015625, + -0.234375 + ], + "scale": 0.5 + } + }, + "6": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-patch", + "line_length": 1, + "width": 100, + "height": 108, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0, + -0.15625 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-patch", + "line_length": 1, + "width": 200, + "height": 220, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.015625, + -0.1875 + ], + "scale": 0.5 + } + } + }, + "input_fluid_patch_shadow_sprites": { + "0": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 110, + "height": 98, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.15625, + 0 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 220, + "height": 197, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.15625, + -0.0078125 + ], + "scale": 0.5 + } + }, + "2": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 112, + "height": 98, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.1875, + 0 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 224, + "height": 198, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.1875, + 0 + ], + "scale": 0.5 + } + }, + "4": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 110, + "height": 98, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.15625, + 0 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 220, + "height": 197, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.15625, + -0.0078125 + ], + "scale": 0.5 + } + }, + "6": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 110, + "height": 98, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.15625, + 0 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-patch-shadow", + "flags": [ + "shadow" + ], + "line_length": 1, + "width": 220, + "height": 197, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.15625, + -0.0078125 + ], + "scale": 0.5 + } + } + }, + "input_fluid_patch_shadow_animations": { + "0": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 100, + "height": 102, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.03125, + -0.09375 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 204, + "height": 206, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.015625, + -0.0625 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "2": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 102, + "height": 98, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0, + -0.0625 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 204, + "height": 209, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.015625, + -0.0390625 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "4": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 100, + "height": 98, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.03125, + -0.03125 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 204, + "height": 204, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + -0.015625, + -0.078125 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + "6": { + "priority": "high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 96, + "height": 99, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0, + -0.046875 + ], + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-drill-received-shadow", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "line_length": 8, + "width": 198, + "height": 206, + "frame_count": 64, + "animation_speed": 0.5, + "direction_count": 1, + "shift": [ + 0.03125, + -0.0625 + ], + "run_mode": "forward-then-backward", + "scale": 0.5 + } + } + }, + "input_fluid_patch_window_sprites": { + "0": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-window-background", + "line_length": 1, + "width": 72, + "height": 54, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.03125, + 0.03125 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-window-background", + "line_length": 1, + "width": 142, + "height": 107, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.03125, + 0.0234375 + ], + "scale": 0.5 + } + }, + "2": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-window-background", + "line_length": 1, + "width": 51, + "height": 74, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.359375, + -0.34375 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-window-background", + "line_length": 1, + "width": 104, + "height": 147, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.34375, + -0.3515625 + ], + "scale": 0.5 + } + }, + "4": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-window-background", + "line_length": 1, + "width": 71, + "height": 44, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.046875, + -0.90625 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-window-background", + "line_length": 1, + "width": 141, + "height": 86, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0546875, + -0.90625 + ], + "scale": 0.5 + } + }, + "6": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-window-background", + "line_length": 1, + "width": 41, + "height": 69, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.359375, + -0.359375 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-window-background", + "line_length": 1, + "width": 80, + "height": 137, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.359375, + -0.3515625 + ], + "scale": 0.5 + } + } + }, + "input_fluid_patch_window_flow_sprites": [ + { + "0": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-fluid-flow", + "line_length": 1, + "width": 68, + "height": 50, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0625, + -0.03125 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-fluid-flow", + "line_length": 1, + "width": 136, + "height": 99, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.078125, + -0.0234375 + ], + "scale": 0.5 + } + }, + "2": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-fluid-flow", + "line_length": 1, + "width": 41, + "height": 70, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.359375, + -0.34375 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-fluid-flow", + "line_length": 1, + "width": 82, + "height": 139, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.359375, + -0.3515625 + ], + "scale": 0.5 + } + }, + "4": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-fluid-flow", + "line_length": 1, + "width": 68, + "height": 40, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0625, + -0.90625 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-fluid-flow", + "line_length": 1, + "width": 136, + "height": 80, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.078125, + -0.921875 + ], + "scale": 0.5 + } + }, + "6": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-fluid-flow", + "line_length": 1, + "width": 42, + "height": 70, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.34375, + -0.34375 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-fluid-flow", + "line_length": 1, + "width": 83, + "height": 140, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.3359375, + -0.34375 + ], + "scale": 0.5 + } + } + } + ], + "input_fluid_patch_window_base_sprites": [ + { + "0": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-N-fluid-background", + "line_length": 1, + "width": 70, + "height": 48, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0625, + 0 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-N-fluid-background", + "line_length": 1, + "width": 138, + "height": 94, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0625, + 0 + ], + "scale": 0.5 + } + }, + "2": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-E-fluid-background", + "line_length": 1, + "width": 42, + "height": 70, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.375, + -0.34375 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-E-fluid-background", + "line_length": 1, + "width": 84, + "height": 138, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.375, + -0.34375 + ], + "scale": 0.5 + } + }, + "4": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-S-fluid-background", + "line_length": 1, + "width": 70, + "height": 40, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0625, + -0.90625 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-S-fluid-background", + "line_length": 1, + "width": 138, + "height": 80, + "frame_count": 1, + "direction_count": 1, + "shift": [ + -0.0625, + -0.90625 + ], + "scale": 0.5 + } + }, + "6": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/electric-mining-drill-W-fluid-background", + "line_length": 1, + "width": 42, + "height": 69, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.375, + -0.328125 + ], + "hr_version": { + "priority": "extra-high", + "filename": "entity:electric-mining-drill/hr-electric-mining-drill-W-fluid-background", + "line_length": 1, + "width": 83, + "height": 137, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.3671875, + -0.3359375 + ], + "scale": 0.5 + } + } + } + ], + "mining_speed": 0.5, + "energy_source": { + "type": "electric", + "emissions": 0.09999999999999999, + "usage_priority": "secondary-input" + }, + "energy_usage": "90kW", + "mining_power": 3, + "resource_searching_radius": 2.49, + "vector_to_place_result": [ + 0, + -1.85 + ], + "module_specification": { + "module_slots": 3 + }, + "radius_visualisation_picture": { + "filename": "entity:electric-mining-drill/electric-mining-drill-radius-visualization", + "width": 12, + "height": 12 + }, + "monitor_visualization_tint": { + "r": 78, + "g": 173, + "b": 255 + }, + "fast_replaceable_group": "mining-drill", + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + -1.640625, + -0.328125 + ], + "green": [ + -1.5625, + -0.53125 + ] + }, + "shadow": { + "red": [ + -1.265625, + 0.125 + ], + "green": [ + -1.171875, + -0.0625 + ] + } + }, + { + "wire": { + "red": [ + 0.125, + 1.234375 + ], + "green": [ + -0.109375, + 1.234375 + ] + }, + "shadow": { + "red": [ + 0.328125, + 1.640625 + ], + "green": [ + 0.109375, + 1.65625 + ] + } + }, + { + "wire": { + "red": [ + 1.59375, + -0.5 + ], + "green": [ + 1.65625, + -0.3125 + ] + }, + "shadow": { + "red": [ + 1.78125, + -0.015625 + ], + "green": [ + 1.859375, + 0.1875 + ] + } + }, + { + "wire": { + "red": [ + -0.078125, + -2.078125 + ], + "green": [ + 0.1875, + -2.078125 + ] + }, + "shadow": { + "red": [ + 0.15625, + -1.609375 + ], + "green": [ + 0.40625, + -1.59375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 312, + "y": 0, + "shift": [ + -1.296875, + -0.171875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + -0.96875, + 0.234375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + -1.296875, + -0.203125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 420, + "y": 0, + "shift": [ + -1.140625, + -0.078125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 360, + "y": 0, + "shift": [ + -1.296875, + -0.203125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 276, + "y": 0, + "shift": [ + -1.296875, + -0.203125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + -1.296875, + -0.203125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + -1.296875, + -0.203125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -1.3125, + -0.5 + ], + "red_green_led_light_offset": [ + -1.3125, + -0.375 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.140625, + 1.0625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.34375, + 1.46875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.140625, + 1.03125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.296875, + 1.15625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.140625, + 1.03125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.140625, + 1.03125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.140625, + 1.03125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + 0.140625, + 1.03125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.078125, + 0.921875 + ], + "red_green_led_light_offset": [ + 0.078125, + 0.921875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 1.3125, + -0.359375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 1.4375, + 0.0625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 1.3125, + -0.390625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 0, + "shift": [ + 1.46875, + -0.265625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + 1.3125, + -0.390625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + 1.3125, + -0.390625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 0, + "shift": [ + 1.3125, + -0.390625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 0, + "shift": [ + 1.3125, + -0.390625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 1.34375, + -0.359375 + ], + "red_green_led_light_offset": [ + 1.34375, + -0.46875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 208, + "y": 0, + "shift": [ + -0.109375, + -1.703125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 248, + "y": 0, + "shift": [ + 0.015625, + -1.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 248, + "y": 0, + "shift": [ + -0.109375, + -1.734375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 280, + "y": 0, + "shift": [ + 0.046875, + -1.609375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + -0.109375, + -1.734375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 184, + "y": 0, + "shift": [ + -0.109375, + -1.734375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + -0.109375, + -1.734375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + -0.109375, + -1.734375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + -1.875 + ], + "red_green_led_light_offset": [ + -0.03125, + -1.875 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "burner-mining-drill": { + "type": "mining-drill", + "name": "burner-mining-drill", + "icon": "entity:icons/burner-mining-drill", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "resource_categories": [ + "basic-solid" + ], + "minable": { + "mining_time": 1, + "result": "burner-mining-drill" + }, + "max_health": 150, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "mining_speed": 0.35, + "working_sound": { + "sound": { + "filename": "entity:sound/burner-mining-drill", + "volume": 0.8 + } + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "energy_source": { + "type": "burner", + "fuel_category": "chemical", + "effectivity": 1, + "fuel_inventory_size": 1, + "emissions": 0.03333333333333333, + "smoke": [ + { + "name": "smoke", + "deviation": [ + 0.1, + 0.1 + ], + "frequency": 3 + } + ] + }, + "energy_usage": "300kW", + "mining_power": 2.5, + "animations": { + "0": { + "layers": [ + { + "priority": "high", + "width": 87, + "height": 95, + "line_length": 4, + "shift": [ + 0.078125, + 0.015625 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-N", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "width": 173, + "height": 188, + "line_length": 4, + "shift": [ + 0.0859375, + 0.015625 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-N", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + { + "priority": "high", + "width": 109, + "height": 76, + "line_length": 4, + "shift": [ + 0.734375, + -0.03125 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-N-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "hr_version": { + "priority": "high", + "width": 217, + "height": 150, + "line_length": 4, + "shift": [ + 0.7421875, + -0.03125 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-N-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "priority": "high", + "width": 93, + "height": 84, + "line_length": 4, + "shift": [ + 0.078125, + 0.03125 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-E", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "width": 185, + "height": 168, + "line_length": 4, + "shift": [ + 0.0859375, + 0.03125 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-E", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + { + "priority": "high", + "width": 93, + "height": 65, + "line_length": 4, + "shift": [ + 0.421875, + 0.015625 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-E-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "hr_version": { + "priority": "high", + "width": 185, + "height": 128, + "line_length": 4, + "shift": [ + 0.4296875, + 0.015625 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-E-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "priority": "high", + "width": 87, + "height": 87, + "line_length": 4, + "shift": [ + 0.015625, + -0.015625 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-S", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "width": 174, + "height": 174, + "line_length": 4, + "shift": [ + 0.015625, + -0.015625 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-S", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + { + "priority": "high", + "width": 88, + "height": 69, + "line_length": 4, + "shift": [ + 0.34375, + 0.078125 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-S-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "hr_version": { + "priority": "high", + "width": 174, + "height": 137, + "line_length": 4, + "shift": [ + 0.34375, + 0.0859375 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-S-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "priority": "high", + "width": 91, + "height": 88, + "line_length": 4, + "shift": [ + -0.046875, + 0 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-W", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "hr_version": { + "priority": "high", + "width": 180, + "height": 176, + "line_length": 4, + "shift": [ + -0.046875, + 0 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-W", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "scale": 0.5 + } + }, + { + "priority": "high", + "width": 89, + "height": 66, + "line_length": 4, + "shift": [ + 0.234375, + 0.03125 + ], + "filename": "entity:burner-mining-drill/burner-mining-drill-W-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "hr_version": { + "priority": "high", + "width": 176, + "height": 130, + "line_length": 4, + "shift": [ + 0.234375, + 0.03125 + ], + "filename": "entity:burner-mining-drill/hr-burner-mining-drill-W-shadow", + "frame_count": 32, + "animation_speed": 0.5, + "run_mode": "forward-then-backward", + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "monitor_visualization_tint": { + "r": 78, + "g": 173, + "b": 255 + }, + "resource_searching_radius": 0.99, + "vector_to_place_result": [ + -0.5, + -1.3 + ], + "fast_replaceable_group": "mining-drill", + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + -0.25, + 0.09375 + ], + "green": [ + -0.375, + 0.296875 + ] + }, + "shadow": { + "red": [ + 0.625, + 0.65625 + ], + "green": [ + 0.328125, + 0.71875 + ] + } + }, + { + "wire": { + "red": [ + -0.15625, + 0.015625 + ], + "green": [ + -0.28125, + 0.21875 + ] + }, + "shadow": { + "red": [ + 0.796875, + 0.59375 + ], + "green": [ + 0.5, + 0.65625 + ] + } + }, + { + "wire": { + "red": [ + -0.171875, + -0.046875 + ], + "green": [ + -0.296875, + 0.15625 + ] + }, + "shadow": { + "red": [ + 0.703125, + 0.46875 + ], + "green": [ + 0.40625, + 0.53125 + ] + } + }, + { + "wire": { + "red": [ + -0.109375, + 0.078125 + ], + "green": [ + -0.234375, + 0.28125 + ] + }, + "shadow": { + "red": [ + 0.875, + 0.5625 + ], + "green": [ + 0.578125, + 0.625 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 100, + "shift": [ + -0.421875, + -0.0625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 92, + "shift": [ + 0.21875, + 0.296875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 116, + "shift": [ + -0.421875, + -0.09375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 112, + "shift": [ + -0.265625, + 0.03125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 120, + "shift": [ + -0.421875, + -0.09375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 88, + "shift": [ + -0.421875, + -0.09375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.421875, + -0.09375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.421875, + -0.09375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.59375, + 0.125 + ], + "red_green_led_light_offset": [ + -0.546875, + 0 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 100, + "shift": [ + -0.328125, + -0.140625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 92, + "shift": [ + 0.390625, + 0.234375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 116, + "shift": [ + -0.328125, + -0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 112, + "shift": [ + -0.171875, + -0.046875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 120, + "shift": [ + -0.328125, + -0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 88, + "shift": [ + -0.328125, + -0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.328125, + -0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.328125, + -0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.5, + 0.046875 + ], + "red_green_led_light_offset": [ + -0.453125, + -0.078125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 100, + "shift": [ + -0.34375, + -0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 92, + "shift": [ + 0.296875, + 0.109375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 116, + "shift": [ + -0.34375, + -0.234375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 112, + "shift": [ + -0.1875, + -0.109375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 120, + "shift": [ + -0.34375, + -0.234375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 88, + "shift": [ + -0.34375, + -0.234375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.34375, + -0.234375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.34375, + -0.234375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.515625, + -0.015625 + ], + "red_green_led_light_offset": [ + -0.46875, + -0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 100, + "shift": [ + -0.28125, + -0.078125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 92, + "shift": [ + 0.46875, + 0.203125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 116, + "shift": [ + -0.28125, + -0.109375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 112, + "shift": [ + -0.125, + 0.015625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 120, + "shift": [ + -0.28125, + -0.109375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 88, + "shift": [ + -0.28125, + -0.109375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.28125, + -0.109375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 92, + "shift": [ + -0.28125, + -0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.453125, + 0.109375 + ], + "red_green_led_light_offset": [ + -0.40625, + -0.015625 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 2, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "pumpjack": { + "type": "mining-drill", + "name": "pumpjack", + "icon": "entity:icons/pumpjack", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "pumpjack" + }, + "resource_categories": [ + "basic-fluid" + ], + "max_health": 200, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "drawing_box": [ + [ + -1.6, + -2.5 + ], + [ + 1.5, + 1.6 + ] + ], + "energy_source": { + "type": "electric", + "emissions": 0.09999999999999999, + "usage_priority": "secondary-input" + }, + "output_fluid_box": { + "base_area": 1, + "base_level": 1, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "positions": [ + [ + 1, + -2 + ], + [ + 2, + -1 + ], + [ + -1, + 2 + ], + [ + -2, + 1 + ] + ] + } + ] + }, + "energy_usage": "90kW", + "mining_speed": 1, + "mining_power": 2, + "resource_searching_radius": 0.49, + "vector_to_place_result": [ + 0, + 0 + ], + "module_specification": { + "module_slots": 2 + }, + "radius_visualisation_picture": { + "filename": "entity:pumpjack/pumpjack-radius-visualization", + "width": 12, + "height": 12 + }, + "monitor_visualization_tint": { + "r": 78, + "g": 173, + "b": 255 + }, + "base_render_layer": "lower-object-above-shadow", + "base_picture": { + "sheets": [ + { + "filename": "entity:pumpjack/pumpjack-base", + "priority": "extra-high", + "width": 131, + "height": 137, + "shift": [ + -0.078125, + -0.140625 + ], + "hr_version": { + "filename": "entity:pumpjack/hr-pumpjack-base", + "priority": "extra-high", + "width": 261, + "height": 273, + "shift": [ + -0.0703125, + -0.1484375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:pumpjack/pumpjack-base-shadow", + "priority": "extra-high", + "width": 110, + "height": 111, + "draw_as_shadow": true, + "shift": [ + 0.1875, + 0.015625 + ], + "hr_version": { + "filename": "entity:pumpjack/hr-pumpjack-base-shadow", + "width": 220, + "height": 220, + "scale": 0.5, + "draw_as_shadow": true, + "shift": [ + 0.1875, + 0.015625 + ] + } + } + ] + }, + "animations": { + "0": { + "layers": [ + { + "priority": "high", + "filename": "entity:pumpjack/pumpjack-horsehead", + "line_length": 8, + "width": 104, + "height": 102, + "frame_count": 40, + "shift": [ + -0.125, + -0.75 + ], + "animation_speed": 0.5, + "hr_version": { + "priority": "high", + "filename": "entity:pumpjack/hr-pumpjack-horsehead", + "animation_speed": 0.5, + "scale": 0.5, + "line_length": 8, + "width": 206, + "height": 202, + "frame_count": 40, + "shift": [ + -0.125, + -0.75 + ] + } + }, + { + "priority": "high", + "filename": "entity:pumpjack/pumpjack-horsehead-shadow", + "animation_speed": 0.5, + "draw_as_shadow": true, + "line_length": 8, + "width": 155, + "height": 41, + "frame_count": 40, + "shift": [ + 0.546875, + 0.453125 + ], + "hr_version": { + "priority": "high", + "filename": "entity:pumpjack/hr-pumpjack-horsehead-shadow", + "animation_speed": 0.5, + "draw_as_shadow": true, + "line_length": 8, + "width": 309, + "height": 82, + "frame_count": 40, + "scale": 0.5, + "shift": [ + 0.5546875, + 0.453125 + ] + } + } + ] + } + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/pumpjack" + }, + "apparent_volume": 1.5 + }, + "fast_replaceable_group": "pumpjack", + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.453125, + -0.609375 + ] + }, + "shadow": { + "red": [ + 0.75, + -0.5625 + ], + "green": [ + 0.53125, + -0.515625 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.453125, + -0.609375 + ] + }, + "shadow": { + "red": [ + 0.75, + -0.5625 + ], + "green": [ + 0.53125, + -0.515625 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.453125, + -0.609375 + ] + }, + "shadow": { + "red": [ + 0.75, + -0.5625 + ], + "green": [ + 0.53125, + -0.515625 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + -0.84375 + ], + "green": [ + 0.453125, + -0.609375 + ] + }, + "shadow": { + "red": [ + 0.75, + -0.5625 + ], + "green": [ + 0.53125, + -0.515625 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + -0.859375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.171875, + -0.8125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + -0.765625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + -0.59375 + ], + "red_green_led_light_offset": [ + 0.109375, + -0.703125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + -0.859375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.171875, + -0.8125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + -0.765625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + -0.59375 + ], + "red_green_led_light_offset": [ + 0.109375, + -0.703125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + -0.859375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.171875, + -0.8125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + -0.765625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + -0.59375 + ], + "red_green_led_light_offset": [ + 0.109375, + -0.703125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + -0.859375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.171875, + -0.8125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + -0.765625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + -0.890625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + -0.59375 + ], + "red_green_led_light_offset": [ + 0.109375, + -0.703125 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "gun-turret": { + "type": "ammo-turret", + "name": "gun-turret", + "icon": "entity:icons/gun-turret", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 0.5, + "result": "gun-turret" + }, + "max_health": 400, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "rotation_speed": 0.015, + "preparing_speed": 0.08, + "folding_speed": 0.08, + "dying_explosion": "medium-explosion", + "inventory_size": 1, + "automated_ammo_count": 10, + "attacking_speed": 0.5, + "alert_when_attacking": true, + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "folded_animation": { + "layers": [ + { + "filename": "entity:gun-turret/gun-turret-gun-extension", + "priority": "medium", + "width": 65, + "height": 63, + "direction_count": 4, + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "shift": [ + 0.015625, + -0.859375 + ], + "axially_symmetrical": false + }, + { + "filename": "entity:gun-turret/gun-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "width": 24, + "height": 31, + "direction_count": 4, + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "shift": [ + 0, + -0.890625 + ], + "axially_symmetrical": false, + "apply_runtime_tint": true + }, + { + "filename": "entity:gun-turret/gun-turret-gun-extension-shadow", + "width": 89, + "height": 49, + "direction_count": 4, + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "shift": [ + 1.20313, + 0.015625 + ], + "axially_symmetrical": false, + "draw_as_shadow": true + } + ] + }, + "preparing_animation": { + "layers": [ + { + "filename": "entity:gun-turret/gun-turret-gun-extension", + "priority": "medium", + "width": 65, + "height": 63, + "direction_count": 4, + "frame_count": 5, + "line_length": 0, + "run_mode": "forward", + "shift": [ + 0.015625, + -0.859375 + ], + "axially_symmetrical": false + }, + { + "filename": "entity:gun-turret/gun-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "width": 24, + "height": 31, + "direction_count": 4, + "frame_count": 5, + "line_length": 0, + "run_mode": "forward", + "shift": [ + 0, + -0.890625 + ], + "axially_symmetrical": false, + "apply_runtime_tint": true + }, + { + "filename": "entity:gun-turret/gun-turret-gun-extension-shadow", + "width": 89, + "height": 49, + "direction_count": 4, + "frame_count": 5, + "line_length": 0, + "run_mode": "forward", + "shift": [ + 1.20313, + 0.015625 + ], + "axially_symmetrical": false, + "draw_as_shadow": true + } + ] + }, + "prepared_animation": { + "layers": [ + { + "width": 66, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.875 + ], + "stripes": [ + { + "filename": "entity:gun-turret/gun-turret-gun-1", + "width_in_frames": 1, + "height_in_frames": 32 + }, + { + "filename": "entity:gun-turret/gun-turret-gun-2", + "width_in_frames": 1, + "height_in_frames": 32 + } + ] + }, + { + "filename": "entity:gun-turret/gun-turret-gun-mask", + "flags": [ + "mask" + ], + "line_length": 1, + "width": 29, + "height": 27, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.015625, + -1.01563 + ], + "apply_runtime_tint": true + }, + { + "width": 91, + "height": 50, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 1.23438, + 0 + ], + "draw_as_shadow": true, + "stripes": [ + { + "filename": "entity:gun-turret/gun-turret-gun-shadow-1", + "width_in_frames": 1, + "height_in_frames": 32 + }, + { + "filename": "entity:gun-turret/gun-turret-gun-shadow-2", + "width_in_frames": 1, + "height_in_frames": 32 + } + ] + } + ] + }, + "attacking_animation": { + "layers": [ + { + "width": 66, + "height": 64, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.875 + ], + "stripes": [ + { + "filename": "entity:gun-turret/gun-turret-gun-1", + "width_in_frames": 2, + "height_in_frames": 32 + }, + { + "filename": "entity:gun-turret/gun-turret-gun-2", + "width_in_frames": 2, + "height_in_frames": 32 + } + ] + }, + { + "filename": "entity:gun-turret/gun-turret-gun-mask", + "flags": [ + "mask" + ], + "line_length": 2, + "width": 29, + "height": 27, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.015625, + -1.01563 + ], + "apply_runtime_tint": true + }, + { + "width": 91, + "height": 50, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 1.23438, + 0 + ], + "draw_as_shadow": true, + "stripes": [ + { + "filename": "entity:gun-turret/gun-turret-gun-shadow-1", + "width_in_frames": 2, + "height_in_frames": 32 + }, + { + "filename": "entity:gun-turret/gun-turret-gun-shadow-2", + "width_in_frames": 2, + "height_in_frames": 32 + } + ] + } + ] + }, + "folding_animation": { + "layers": [ + { + "filename": "entity:gun-turret/gun-turret-gun-extension", + "priority": "medium", + "width": 65, + "height": 63, + "direction_count": 4, + "frame_count": 5, + "line_length": 0, + "run_mode": "backward", + "shift": [ + 0.015625, + -0.859375 + ], + "axially_symmetrical": false + }, + { + "filename": "entity:gun-turret/gun-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "width": 24, + "height": 31, + "direction_count": 4, + "frame_count": 5, + "line_length": 0, + "run_mode": "backward", + "shift": [ + 0, + -0.890625 + ], + "axially_symmetrical": false, + "apply_runtime_tint": true + }, + { + "filename": "entity:gun-turret/gun-turret-gun-extension-shadow", + "width": 89, + "height": 49, + "direction_count": 4, + "frame_count": 5, + "line_length": 0, + "run_mode": "backward", + "shift": [ + 1.20313, + 0.015625 + ], + "axially_symmetrical": false, + "draw_as_shadow": true + } + ] + }, + "base_picture": { + "layers": [ + { + "filename": "entity:gun-turret/gun-turret-base", + "priority": "high", + "width": 90, + "height": 75, + "axially_symmetrical": false, + "direction_count": 1, + "frame_count": 1, + "shift": [ + 0, + -0.046875 + ] + }, + { + "filename": "entity:gun-turret/gun-turret-base-mask", + "flags": [ + "mask" + ], + "line_length": 1, + "width": 52, + "height": 47, + "axially_symmetrical": false, + "direction_count": 1, + "frame_count": 1, + "shift": [ + 0, + -0.234375 + ], + "apply_runtime_tint": true + } + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "attack_parameters": { + "type": "projectile", + "ammo_category": "bullet", + "cooldown": 6, + "projectile_creation_distance": 1.39375, + "projectile_center": [ + 0, + -0.0875 + ], + "shell_particle": { + "name": "shell-particle", + "direction_deviation": 0.1, + "speed": 0.1, + "speed_deviation": 0.03, + "center": [ + -0.0625, + 0 + ], + "creation_distance": -1.925, + "starting_frame_speed": 0.2, + "starting_frame_speed_deviation": 0.1 + }, + "range": 18, + "sound": [ + { + "filename": "entity:fight/heavy-gunshot-1", + "volume": 0.45 + }, + { + "filename": "entity:fight/heavy-gunshot-2", + "volume": 0.45 + }, + { + "filename": "entity:fight/heavy-gunshot-3", + "volume": 0.45 + }, + { + "filename": "entity:fight/heavy-gunshot-4", + "volume": 0.45 + } + ] + }, + "call_for_help_radius": 40, + "size": { + "width": 2, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "underground-belt": { + "type": "underground-belt", + "name": "underground-belt", + "icon": "entity:icons/underground-belt", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "underground-belt" + }, + "max_health": 150, + "corpse": "small-remnants", + "max_distance": 5, + "underground_sprite": { + "filename": "entity:arrows/underground-lines", + "priority": "high", + "width": 64, + "height": 64, + "x": 64, + "scale": 0.5 + }, + "underground_remove_belts_sprite": { + "filename": "entity:arrows/underground-lines-remove", + "priority": "high", + "width": 64, + "height": 64, + "x": 64, + "scale": 0.5 + }, + "resistances": [ + { + "type": "fire", + "percent": 60 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "animation_speed_coefficient": 32, + "belt_horizontal": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "scale": 0.5, + "frame_count": 16 + } + }, + "belt_vertical": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 40, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "scale": 0.5, + "y": 80 + } + }, + "ending_top": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 80, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 120, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 240, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 160, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 320, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 200, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 400, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 240, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 480, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 280, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 560, + "scale": 0.5 + } + }, + "fast_replaceable_group": "underground-belt", + "speed": 0.03125, + "structure": { + "direction_in": { + "sheet": { + "filename": "entity:underground-belt/underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.25, + 0 + ], + "width": 57, + "height": 43, + "y": 43, + "hr_version": { + "filename": "entity:underground-belt/hr-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.15625, + 0.0703125 + ], + "width": 106, + "height": 85, + "y": 85, + "scale": 0.5 + } + } + }, + "direction_out": { + "sheet": { + "filename": "entity:underground-belt/underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.25, + 0 + ], + "width": 57, + "height": 43, + "hr_version": { + "filename": "entity:underground-belt/hr-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.15625, + 0.0703125 + ], + "width": 106, + "height": 85, + "scale": 0.5 + } + } + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "fast-underground-belt": { + "type": "underground-belt", + "name": "fast-underground-belt", + "icon": "entity:icons/fast-underground-belt", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "fast-underground-belt" + }, + "max_health": 160, + "corpse": "small-remnants", + "max_distance": 7, + "underground_sprite": { + "filename": "entity:arrows/underground-lines", + "priority": "high", + "width": 64, + "height": 64, + "x": 64, + "scale": 0.5 + }, + "underground_remove_belts_sprite": { + "filename": "entity:arrows/underground-lines-remove", + "priority": "high", + "width": 64, + "height": 64, + "x": 64, + "scale": 0.5 + }, + "resistances": [ + { + "type": "fire", + "percent": 60 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "animation_speed_coefficient": 32, + "belt_horizontal": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "scale": 0.5 + } + }, + "belt_vertical": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 40, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_top": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 80, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 320, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 120, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 480, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 160, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 640, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 200, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 800, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 240, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 960, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 280, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 1120, + "scale": 0.5 + } + }, + "fast_replaceable_group": "underground-belt", + "speed": 0.0625, + "structure": { + "direction_in": { + "sheet": { + "filename": "entity:fast-underground-belt/fast-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.26, + 0 + ], + "width": 57, + "height": 43, + "y": 43, + "hr_version": { + "filename": "entity:fast-underground-belt/hr-fast-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.15625, + 0.0703125 + ], + "width": 106, + "height": 85, + "y": 85, + "scale": 0.5 + } + } + }, + "direction_out": { + "sheet": { + "filename": "entity:fast-underground-belt/fast-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.26, + 0 + ], + "width": 57, + "height": 43, + "hr_version": { + "filename": "entity:fast-underground-belt/hr-fast-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.15625, + 0.0703125 + ], + "width": 106, + "height": 85, + "scale": 0.5 + } + } + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "express-underground-belt": { + "type": "underground-belt", + "name": "express-underground-belt", + "icon": "entity:icons/express-underground-belt", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "express-underground-belt" + }, + "max_health": 170, + "corpse": "small-remnants", + "max_distance": 9, + "underground_sprite": { + "filename": "entity:arrows/underground-lines", + "priority": "high", + "width": 64, + "height": 64, + "x": 64, + "scale": 0.5 + }, + "underground_remove_belts_sprite": { + "filename": "entity:arrows/underground-lines-remove", + "priority": "high", + "width": 64, + "height": 64, + "x": 64, + "scale": 0.5 + }, + "resistances": [ + { + "type": "fire", + "percent": 60 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "animation_speed_coefficient": 32, + "belt_horizontal": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "scale": 0.5 + } + }, + "belt_vertical": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 40, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_top": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 80, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 320, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 120, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 480, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 160, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 640, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 200, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 800, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 240, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 960, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 280, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 1120, + "scale": 0.5 + } + }, + "fast_replaceable_group": "underground-belt", + "speed": 0.09375, + "structure": { + "direction_in": { + "sheet": { + "filename": "entity:express-underground-belt/express-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.26, + 0 + ], + "width": 57, + "height": 43, + "y": 43, + "hr_version": { + "filename": "entity:express-underground-belt/hr-express-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.15625, + 0.0703125 + ], + "width": 106, + "height": 85, + "y": 85, + "scale": 0.5 + } + } + }, + "direction_out": { + "sheet": { + "filename": "entity:express-underground-belt/express-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.26, + 0 + ], + "width": 57, + "height": 43, + "hr_version": { + "filename": "entity:express-underground-belt/hr-express-underground-belt-structure", + "priority": "extra-high", + "shift": [ + 0.15625, + 0.0703125 + ], + "width": 106, + "height": 85, + "scale": 0.5 + } + } + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "splitter": { + "type": "splitter", + "name": "splitter", + "icon": "entity:icons/splitter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "splitter" + }, + "max_health": 170, + "corpse": "medium-remnants", + "resistances": [ + { + "type": "fire", + "percent": 60 + } + ], + "collision_box": [ + [ + -0.9, + -0.4 + ], + [ + 0.9, + 0.4 + ] + ], + "selection_box": [ + [ + -0.9, + -0.5 + ], + [ + 0.9, + 0.5 + ] + ], + "animation_speed_coefficient": 32, + "structure_animation_speed_coefficient": 0.7, + "structure_animation_movement_cooldown": 10, + "belt_horizontal": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "scale": 0.5, + "frame_count": 16 + } + }, + "belt_vertical": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 40, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "scale": 0.5, + "y": 80 + } + }, + "ending_top": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 80, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 120, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 240, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 160, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 320, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 200, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 400, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 240, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 480, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:transport-belt/transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 16, + "y": 280, + "hr_version": { + "filename": "entity:transport-belt/hr-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 16, + "y": 560, + "scale": 0.5 + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "fast_replaceable_group": "splitter", + "speed": 0.03125, + "structure": { + "0": { + "filename": "entity:splitter/splitter-north", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 83, + "height": 36, + "shift": [ + 0.265625, + 0 + ], + "hr_version": { + "filename": "entity:splitter/hr-splitter-north", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 164, + "height": 70, + "shift": [ + 0.25, + 0.046875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:splitter/splitter-east", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 51, + "height": 80, + "shift": [ + 0.109375, + -0.03125 + ], + "hr_version": { + "filename": "entity:splitter/hr-splitter-east", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 93, + "height": 157, + "shift": [ + 0.148438, + -0.179688 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:splitter/splitter-south", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 85, + "height": 35, + "shift": [ + 0.140625, + -0.015625 + ], + "hr_version": { + "filename": "entity:splitter/hr-splitter-south", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 168, + "height": 67, + "shift": [ + 0.140625, + 0.0234375 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:splitter/splitter-west", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 51, + "height": 78, + "shift": [ + 0.296875, + -0.03125 + ], + "hr_version": { + "filename": "entity:splitter/hr-splitter-west", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 94, + "height": 154, + "shift": [ + 0.203125, + -0.109375 + ], + "scale": 0.5 + } + } + }, + "size": { + "width": 2, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "fast-splitter": { + "type": "splitter", + "name": "fast-splitter", + "icon": "entity:icons/fast-splitter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "fast-splitter" + }, + "max_health": 180, + "corpse": "medium-remnants", + "resistances": [ + { + "type": "fire", + "percent": 60 + } + ], + "collision_box": [ + [ + -0.9, + -0.4 + ], + [ + 0.9, + 0.4 + ] + ], + "selection_box": [ + [ + -0.9, + -0.5 + ], + [ + 0.9, + 0.5 + ] + ], + "animation_speed_coefficient": 32, + "structure_animation_speed_coefficient": 1.2, + "structure_animation_movement_cooldown": 10, + "belt_horizontal": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "scale": 0.5 + } + }, + "belt_vertical": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 40, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_top": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 80, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 320, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 120, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 480, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 160, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 640, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 200, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 800, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 240, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 960, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:fast-transport-belt/fast-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 280, + "hr_version": { + "filename": "entity:fast-transport-belt/hr-fast-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 1120, + "scale": 0.5 + } + }, + "fast_replaceable_group": "splitter", + "speed": 0.0625, + "structure": { + "0": { + "filename": "entity:fast-splitter/fast-splitter-north", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 83, + "height": 36, + "shift": [ + 0.265625, + 0 + ], + "hr_version": { + "filename": "entity:fast-splitter/hr-fast-splitter-north", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 164, + "height": 70, + "shift": [ + 0.25, + 0.046875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:fast-splitter/fast-splitter-east", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 51, + "height": 80, + "shift": [ + 0.109375, + -0.03125 + ], + "hr_version": { + "filename": "entity:fast-splitter/hr-fast-splitter-east", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 93, + "height": 157, + "shift": [ + 0.148438, + -0.179688 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:fast-splitter/fast-splitter-south", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 85, + "height": 35, + "shift": [ + 0.140625, + -0.015625 + ], + "hr_version": { + "filename": "entity:fast-splitter/hr-fast-splitter-south", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 168, + "height": 67, + "shift": [ + 0.140625, + 0.0234375 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:fast-splitter/fast-splitter-west", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 51, + "height": 78, + "shift": [ + 0.296875, + -0.03125 + ], + "hr_version": { + "filename": "entity:fast-splitter/hr-fast-splitter-west", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 94, + "height": 154, + "shift": [ + 0.203125, + -0.109375 + ], + "scale": 0.5 + } + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "size": { + "width": 2, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "express-splitter": { + "type": "splitter", + "name": "express-splitter", + "icon": "entity:icons/express-splitter", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "express-splitter" + }, + "max_health": 190, + "corpse": "medium-remnants", + "resistances": [ + { + "type": "fire", + "percent": 60 + } + ], + "collision_box": [ + [ + -0.9, + -0.4 + ], + [ + 0.9, + 0.4 + ] + ], + "selection_box": [ + [ + -0.9, + -0.5 + ], + [ + 0.9, + 0.5 + ] + ], + "animation_speed_coefficient": 32, + "structure_animation_speed_coefficient": 1.2, + "structure_animation_movement_cooldown": 10, + "belt_horizontal": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "scale": 0.5 + } + }, + "belt_vertical": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 40, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 160, + "scale": 0.5 + } + }, + "ending_top": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 80, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 320, + "scale": 0.5 + } + }, + "ending_bottom": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 120, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 480, + "scale": 0.5 + } + }, + "ending_side": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 160, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 640, + "scale": 0.5 + } + }, + "starting_top": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 200, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 800, + "scale": 0.5 + } + }, + "starting_bottom": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 240, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 960, + "scale": 0.5 + } + }, + "starting_side": { + "filename": "entity:express-transport-belt/express-transport-belt", + "priority": "extra-high", + "width": 40, + "height": 40, + "frame_count": 32, + "y": 280, + "hr_version": { + "filename": "entity:express-transport-belt/hr-express-transport-belt", + "priority": "extra-high", + "width": 80, + "height": 80, + "frame_count": 32, + "line_length": 16, + "y": 1120, + "scale": 0.5 + } + }, + "ending_patch": { + "sheet": { + "filename": "entity:transport-belt/start-end-integration-patches", + "width": 40, + "height": 40, + "priority": "extra-high", + "hr_version": { + "filename": "entity:transport-belt/hr-start-end-integration-patches", + "width": 80, + "height": 80, + "priority": "extra-high", + "scale": 0.5 + } + } + }, + "fast_replaceable_group": "splitter", + "speed": 0.09375, + "structure": { + "0": { + "filename": "entity:express-splitter/express-splitter-north", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 83, + "height": 36, + "shift": [ + 0.21875, + 0 + ], + "hr_version": { + "filename": "entity:express-splitter/hr-express-splitter-north", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 164, + "height": 70, + "shift": [ + 0.265625, + 0 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:express-splitter/express-splitter-east", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 51, + "height": 80, + "shift": [ + 0.109375, + -0.03125 + ], + "hr_version": { + "filename": "entity:express-splitter/hr-express-splitter-east", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 93, + "height": 157, + "shift": [ + 0.148438, + -0.179688 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:express-splitter/express-splitter-south", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 85, + "height": 35, + "shift": [ + 0.140625, + -0.015625 + ], + "hr_version": { + "filename": "entity:express-splitter/hr-express-splitter-south", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 168, + "height": 67, + "shift": [ + 0.140625, + 0.0234375 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:express-splitter/express-splitter-west", + "frame_count": 32, + "line_length": 16, + "priority": "extra-high", + "width": 51, + "height": 78, + "shift": [ + 0.296875, + -0.03125 + ], + "hr_version": { + "filename": "entity:express-splitter/hr-express-splitter-west", + "frame_count": 32, + "line_length": 8, + "priority": "extra-high", + "width": 94, + "height": 154, + "shift": [ + 0.203125, + -0.109375 + ], + "scale": 0.5 + } + } + }, + "size": { + "width": 2, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "solar-panel": { + "type": "solar-panel", + "name": "solar-panel", + "icon": "entity:icons/solar-panel", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "solar-panel" + }, + "max_health": 200, + "corpse": "big-remnants", + "collision_box": [ + [ + -1.4, + -1.4 + ], + [ + 1.4, + 1.4 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "energy_source": { + "type": "electric", + "usage_priority": "solar" + }, + "picture": { + "layers": [ + { + "filename": "entity:solar-panel/solar-panel", + "priority": "high", + "width": 116, + "height": 112, + "shift": [ + -0.09375, + 0.09375 + ], + "hr_version": { + "filename": "entity:solar-panel/hr-solar-panel", + "priority": "high", + "width": 230, + "height": 224, + "shift": [ + -0.09375, + 0.109375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:solar-panel/solar-panel-shadow", + "priority": "high", + "width": 112, + "height": 90, + "shift": [ + 0.3125, + 0.1875 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:solar-panel/hr-solar-panel-shadow", + "priority": "high", + "width": 220, + "height": 180, + "shift": [ + 0.296875, + 0.1875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "overlay": { + "layers": [ + { + "filename": "entity:solar-panel/solar-panel-shadow-overlay", + "priority": "high", + "width": 108, + "height": 90, + "shift": [ + 0.34375, + 0.1875 + ], + "hr_version": { + "filename": "entity:solar-panel/hr-solar-panel-shadow-overlay", + "priority": "high", + "width": 214, + "height": 180, + "shift": [ + 0.328125, + 0.1875 + ], + "scale": 0.5 + } + } + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "production": "60kW", + "size": { + "width": 3, + "height": 3 + } + }, + "gate": { + "type": "gate", + "name": "gate", + "icon": "entity:icons/gate", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "fast_replaceable_group": "wall", + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "gate" + }, + "max_health": 350, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.29, + -0.29 + ], + [ + 0.29, + 0.29 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "opening_speed": 0.0666666, + "activation_distance": 3, + "timeout_to_close": 5, + "resistances": [ + { + "type": "physical", + "decrease": 3, + "percent": 20 + }, + { + "type": "impact", + "decrease": 45, + "percent": 60 + }, + { + "type": "explosion", + "decrease": 10, + "percent": 30 + }, + { + "type": "fire", + "percent": 100 + }, + { + "type": "laser", + "percent": 70 + } + ], + "vertical_animation": { + "layers": [ + { + "filename": "entity:gate/gate-vertical", + "line_length": 8, + "width": 21, + "height": 60, + "frame_count": 16, + "shift": [ + 0.015625, + -0.40625 + ] + }, + { + "filename": "entity:gate/gate-vertical-shadow", + "line_length": 8, + "width": 41, + "height": 50, + "frame_count": 16, + "shift": [ + 0.328125, + 0.3 + ], + "draw_as_shadow": true + } + ] + }, + "horizontal_animation": { + "layers": [ + { + "filename": "entity:gate/gate-horizontal", + "line_length": 8, + "width": 32, + "height": 36, + "frame_count": 16, + "shift": [ + 0, + -0.21875 + ] + }, + { + "filename": "entity:gate/gate-horizontal-shadow", + "line_length": 8, + "width": 62, + "height": 28, + "frame_count": 16, + "shift": [ + 0.4375, + 0.46875 + ], + "draw_as_shadow": true + } + ] + }, + "vertical_base": { + "layers": [ + { + "filename": "entity:gate/gate-base-vertical", + "width": 32, + "height": 32 + }, + { + "filename": "entity:gate/gate-base-vertical-mask", + "width": 32, + "height": 32, + "apply_runtime_tint": true + } + ] + }, + "horizontal_rail_animation_left": { + "layers": [ + { + "filename": "entity:gate/gate-rail-horizontal-left", + "line_length": 8, + "width": 32, + "height": 47, + "frame_count": 16, + "shift": [ + 0, + -0.015625 + ] + }, + { + "filename": "entity:gate/gate-rail-horizontal-shadow-left", + "line_length": 8, + "width": 73, + "height": 27, + "frame_count": 16, + "shift": [ + 0.078125, + 0.296875 + ], + "draw_as_shadow": true + } + ] + }, + "horizontal_rail_animation_right": { + "layers": [ + { + "filename": "entity:gate/gate-rail-horizontal-right", + "line_length": 8, + "width": 32, + "height": 43, + "frame_count": 16, + "shift": [ + 0, + -0.078125 + ] + }, + { + "filename": "entity:gate/gate-rail-horizontal-shadow-right", + "line_length": 8, + "width": 73, + "height": 28, + "frame_count": 16, + "shift": [ + 0.60938, + 0.4125 + ], + "draw_as_shadow": true + } + ] + }, + "vertical_rail_animation_left": { + "layers": [ + { + "filename": "entity:gate/gate-rail-vertical-left", + "line_length": 8, + "width": 22, + "height": 54, + "frame_count": 16, + "shift": [ + 0, + -0.46875 + ] + }, + { + "filename": "entity:gate/gate-rail-vertical-shadow-left", + "line_length": 8, + "width": 47, + "height": 48, + "frame_count": 16, + "shift": [ + 0.27, + 0.33875 + ], + "draw_as_shadow": true + } + ] + }, + "vertical_rail_animation_right": { + "layers": [ + { + "filename": "entity:gate/gate-rail-vertical-right", + "line_length": 8, + "width": 22, + "height": 55, + "frame_count": 16, + "shift": [ + 0, + -0.453125 + ] + }, + { + "filename": "entity:gate/gate-rail-vertical-shadow-right", + "line_length": 8, + "width": 47, + "height": 47, + "frame_count": 16, + "shift": [ + 0.27, + 0.303125 + ], + "draw_as_shadow": true + } + ] + }, + "vertical_rail_base": { + "filename": "entity:gate/gate-rail-base-vertical", + "line_length": 8, + "width": 64, + "height": 64, + "frame_count": 16, + "shift": [ + 0, + 0 + ] + }, + "horizontal_rail_base": { + "filename": "entity:gate/gate-rail-base-horizontal", + "line_length": 8, + "width": 64, + "height": 45, + "frame_count": 16, + "shift": [ + 0, + 0.109375 + ] + }, + "vertical_rail_base_mask": { + "filename": "entity:gate/gate-rail-base-mask-vertical", + "width": 63, + "height": 39, + "shift": [ + 0.015625, + -0.015625 + ], + "apply_runtime_tint": true + }, + "horizontal_rail_base_mask": { + "filename": "entity:gate/gate-rail-base-mask-horizontal", + "width": 53, + "height": 45, + "shift": [ + 0.015625, + 0.109375 + ], + "apply_runtime_tint": true + }, + "horizontal_base": { + "layers": [ + { + "filename": "entity:gate/gate-base-horizontal", + "width": 32, + "height": 23, + "shift": [ + 0, + 0.125 + ] + }, + { + "filename": "entity:gate/gate-base-horizontal-mask", + "width": 32, + "height": 23, + "apply_runtime_tint": true, + "shift": [ + 0, + 0.125 + ] + } + ] + }, + "wall_patch": { + "0": { + "layers": [ + { + "filename": "entity:gate/wall-patch-north", + "width": 22, + "height": 35, + "shift": [ + 0, + 0.38 + ] + }, + { + "filename": "entity:gate/wall-patch-north-shadow", + "width": 46, + "height": 31, + "shift": [ + 0.3, + 1.2 + ], + "draw_as_shadow": true + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:gate/wall-patch-east", + "width": 11, + "height": 40, + "shift": [ + -0.671875, + -0.109375 + ] + }, + { + "filename": "entity:gate/wall-patch-east-shadow", + "width": 38, + "height": 32, + "shift": [ + -0.1875, + 0.46875 + ], + "draw_as_shadow": true + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:gate/wall-patch-south", + "width": 22, + "height": 40, + "shift": [ + 0, + -1.125 + ] + }, + { + "filename": "entity:gate/wall-patch-south-shadow", + "width": 48, + "height": 25, + "shift": [ + 0.3, + 0.95 + ], + "draw_as_shadow": true + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:gate/wall-patch-west", + "width": 11, + "height": 40, + "shift": [ + 0.671875, + -0.109375 + ] + }, + { + "filename": "entity:gate/wall-patch-west-shadow", + "width": 46, + "height": 32, + "shift": [ + 1.1875, + 0.46875 + ], + "draw_as_shadow": true + } + ] + } + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "open_sound": { + "variations": { + "filename": "entity:sound/gate1", + "volume": 0.5 + }, + "aggregation": { + "max_count": 1, + "remove": true + } + }, + "close_sound": { + "variations": { + "filename": "entity:sound/gate1", + "volume": 0.5 + }, + "aggregation": { + "max_count": 1, + "remove": true + } + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2 + ] + }, + "straight-rail": { + "type": "straight-rail", + "name": "straight-rail", + "icon": "entity:icons/rail", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "building-direction-8-way" + ], + "minable": { + "mining_time": 0.5, + "result": "rail" + }, + "max_health": 100, + "corpse": "straight-rail-remnants", + "resistances": [ + { + "type": "fire", + "percent": 100 + } + ], + "collision_box": [ + [ + -0.7, + -0.8 + ], + [ + 0.7, + 0.8 + ] + ], + "selection_box": [ + [ + -0.7, + -0.8 + ], + [ + 0.7, + 0.8 + ] + ], + "rail_category": "regular", + "pictures": { + "straight_rail_horizontal": { + "metals": { + "filename": "entity:straight-rail/straight-rail-horizontal-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-horizontal-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-horizontal-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-horizontal-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-horizontal-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_vertical": { + "metals": { + "filename": "entity:straight-rail/straight-rail-vertical-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-vertical-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-vertical-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-vertical-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-vertical-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_left_top": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_right_top": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_right_bottom": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_left_bottom": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_left_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_right_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_right_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_left_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_left_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_right_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_right_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_left_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "rail_endings": { + "sheets": [ + { + "filename": "entity:rail-endings/rail-endings-background", + "priority": "high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 128, + "hr_version": { + "filename": "entity:rail-endings/hr-rail-endings-background", + "priority": "high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 256, + "scale": 0.5 + } + }, + { + "filename": "entity:rail-endings/rail-endings-metals", + "priority": "high", + "flags": [ + "icon" + ], + "width": 128, + "height": 128, + "hr_version": { + "filename": "entity:rail-endings/hr-rail-endings-metals", + "priority": "high", + "flags": [ + "icon" + ], + "width": 256, + "height": 256, + "scale": 0.5 + } + } + ] + } + }, + "size": { + "width": 2, + "height": 2 + }, + "possible_rotations": [ + 0, + 2 + ] + }, + "curved-rail": { + "type": "curved-rail", + "name": "curved-rail", + "icon": "entity:icons/curved-rail", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "building-direction-8-way" + ], + "minable": { + "mining_time": 0.5, + "result": "rail", + "count": 4 + }, + "max_health": 200, + "corpse": "curved-rail-remnants", + "resistances": [ + { + "type": "fire", + "percent": 100 + } + ], + "collision_box": [ + [ + -0.75, + -0.55 + ], + [ + 0.75, + 1.6 + ] + ], + "secondary_collision_box": [ + [ + -0.65, + -2.43 + ], + [ + 0.65, + 2.43 + ] + ], + "selection_box": [ + [ + -1.7, + -0.8 + ], + [ + 1.7, + 0.8 + ] + ], + "rail_category": "regular", + "pictures": { + "straight_rail_horizontal": { + "metals": { + "filename": "entity:straight-rail/straight-rail-horizontal-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-horizontal-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-horizontal-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-horizontal-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-horizontal-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-horizontal-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 64, + "height": 128, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-horizontal-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 256, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_vertical": { + "metals": { + "filename": "entity:straight-rail/straight-rail-vertical-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-vertical-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-vertical-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-vertical-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-vertical-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-vertical-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 64, + "shift": [ + 0, + 0 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-vertical-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 128, + "shift": [ + 0, + 0 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_left_top": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_right_top": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_right_bottom": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "straight_rail_diagonal_left_bottom": { + "metals": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "stone_path_background": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 3, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 3 + } + }, + "segment_visualisation_middle": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:straight-rail/straight-rail-diagonal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 96, + "height": 96, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_left_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_right_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_right_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_vertical_left_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-vertical-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 192, + "height": 288, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-vertical-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 384, + "height": 576, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_left_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_right_top": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + 0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-top-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + 0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_right_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + -0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + -0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "curved_rail_horizontal_left_bottom": { + "metals": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-metals", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "backplates": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-backplates", + "priority": "extra-high", + "flags": [ + "icon" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "ties": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-ties", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-stone-path", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "stone_path_background": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-stone-path-background", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_middle": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-middle", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-ending-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_ending_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-ending-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_front": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-continuing-1", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + }, + "segment_visualisation_continuing_back": { + "filename": "entity:curved-rail/curved-rail-horizontal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 288, + "height": 192, + "shift": [ + 0.5, + -0.5 + ], + "variation_count": 1, + "hr_version": { + "filename": "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-segment-visualisation-continuing-2", + "priority": "extra-high", + "flags": [ + "low-object" + ], + "width": 576, + "height": 384, + "shift": [ + 0.5, + -0.5 + ], + "scale": 0.5, + "variation_count": 1 + } + } + }, + "rail_endings": { + "sheets": [ + { + "filename": "entity:rail-endings/rail-endings-background", + "priority": "high", + "flags": [ + "low-object" + ], + "width": 128, + "height": 128, + "hr_version": { + "filename": "entity:rail-endings/hr-rail-endings-background", + "priority": "high", + "flags": [ + "low-object" + ], + "width": 256, + "height": 256, + "scale": 0.5 + } + }, + { + "filename": "entity:rail-endings/rail-endings-metals", + "priority": "high", + "flags": [ + "icon" + ], + "width": 128, + "height": 128, + "hr_version": { + "filename": "entity:rail-endings/hr-rail-endings-metals", + "priority": "high", + "flags": [ + "icon" + ], + "width": 256, + "height": 256, + "scale": 0.5 + } + } + ] + } + }, + "placeable_by": { + "item": "rail", + "count": 4 + }, + "size": { + "width": 4, + "height": 2 + } + }, + "land-mine": { + "type": "land-mine", + "name": "land-mine", + "icon": "entity:icons/land-mine", + "icon_size": 32, + "flags": [ + "placeable-player", + "placeable-enemy", + "player-creation", + "placeable-off-grid", + "not-on-map" + ], + "minable": { + "mining_time": 1, + "result": "land-mine" + }, + "mined_sound": { + "filename": "entity:sound/deconstruct-small" + }, + "max_health": 15, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.4, + -0.4 + ], + [ + 0.4, + 0.4 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "dying_explosion": "explosion-hit", + "picture_safe": { + "filename": "entity:land-mine/land-mine", + "priority": "medium", + "width": 32, + "height": 32 + }, + "picture_set": { + "filename": "entity:land-mine/land-mine-set", + "priority": "medium", + "width": 32, + "height": 32 + }, + "picture_set_enemy": { + "filename": "entity:land-mine/land-mine-set-enemy", + "priority": "medium", + "width": 32, + "height": 32 + }, + "trigger_radius": 2.5, + "ammo_category": "landmine", + "action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "source_effects": [ + { + "type": "nested-result", + "affects_target": true, + "action": { + "type": "area", + "radius": 6, + "force": "enemy", + "action_delivery": { + "type": "instant", + "target_effects": [ + { + "type": "damage", + "damage": { + "amount": 300, + "type": "explosion" + } + }, + { + "type": "create-sticker", + "sticker": "stun-sticker" + } + ] + } + } + }, + { + "type": "create-entity", + "entity_name": "explosion" + }, + { + "type": "damage", + "damage": { + "amount": 1000, + "type": "explosion" + } + } + ] + } + }, + "size": { + "width": 1, + "height": 1 + } + }, + "train-stop": { + "type": "train-stop", + "name": "train-stop", + "icon": "entity:icons/train-stop", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "filter-directions" + ], + "minable": { + "mining_time": 1, + "result": "train-stop" + }, + "max_health": 250, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "selection_box": [ + [ + -0.9, + -0.9 + ], + [ + 0.9, + 0.9 + ] + ], + "drawing_boxes": { + "0": [ + [ + -3, + -2.5 + ], + [ + 0.8, + 1.25 + ] + ], + "2": [ + [ + -1.75, + -4.25 + ], + [ + 1.625, + 0.5 + ] + ], + "4": [ + [ + -0.8125, + -3.625 + ], + [ + 2.75, + 0.4375 + ] + ], + "6": [ + [ + -1.75, + -1.6875 + ], + [ + 2.0625, + 2.75 + ] + ] + }, + "tile_width": 2, + "tile_height": 2, + "animation_ticks_per_frame": 20, + "rail_overlay_animations": { + "0": { + "filename": "entity:train-stop/train-stop-ground", + "priority": "high", + "x": 0, + "width": 194, + "height": 189, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.015625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-ground", + "priority": "high", + "x": 0, + "width": 386, + "height": 377, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.0234375 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:train-stop/train-stop-ground", + "priority": "high", + "x": 194, + "width": 194, + "height": 189, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.015625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-ground", + "priority": "high", + "x": 386, + "width": 386, + "height": 377, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.0234375 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:train-stop/train-stop-ground", + "priority": "high", + "x": 388, + "width": 194, + "height": 189, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.015625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-ground", + "priority": "high", + "x": 772, + "width": 386, + "height": 377, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.0234375 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:train-stop/train-stop-ground", + "priority": "high", + "x": 582, + "width": 194, + "height": 189, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.015625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-ground", + "priority": "high", + "x": 1158, + "width": 386, + "height": 377, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -0.0234375 + ], + "scale": 0.5 + } + } + }, + "animations": { + "0": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-bottom", + "priority": "high", + "x": 0, + "width": 71, + "height": 146, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.84375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-bottom", + "priority": "high", + "x": 0, + "width": 140, + "height": 291, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.8359375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-shadow", + "priority": "high", + "x": 0, + "width": 361, + "height": 304, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5625 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-shadow", + "priority": "high", + "x": 0, + "width": 720, + "height": 607, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5546875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-bottom", + "priority": "high", + "x": 71, + "width": 71, + "height": 146, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.84375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-bottom", + "priority": "high", + "x": 140, + "width": 140, + "height": 291, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.8359375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-shadow", + "priority": "high", + "x": 361, + "width": 361, + "height": 304, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5625 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-shadow", + "priority": "high", + "x": 720, + "width": 720, + "height": 607, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5546875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-bottom", + "priority": "high", + "x": 142, + "width": 71, + "height": 146, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.84375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-bottom", + "priority": "high", + "x": 280, + "width": 140, + "height": 291, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.8359375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-shadow", + "priority": "high", + "x": 722, + "width": 361, + "height": 304, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5625 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-shadow", + "priority": "high", + "x": 1440, + "width": 720, + "height": 607, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5546875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-bottom", + "priority": "high", + "x": 213, + "width": 71, + "height": 146, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.84375 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-bottom", + "priority": "high", + "x": 420, + "width": 140, + "height": 291, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.015625, + -0.8359375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-shadow", + "priority": "high", + "x": 1083, + "width": 361, + "height": 304, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5625 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-shadow", + "priority": "high", + "x": 2160, + "width": 720, + "height": 607, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.234375, + 0.5546875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "top_animations": { + "0": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-top", + "priority": "high", + "x": 0, + "width": 156, + "height": 153, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.578125 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top", + "priority": "high", + "x": 0, + "width": 311, + "height": 305, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.5859375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-top-mask", + "priority": "high", + "x": 0, + "width": 154, + "height": 148, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.53125 + ], + "apply_runtime_tint": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top-mask", + "priority": "high", + "x": 0, + "width": 306, + "height": 295, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.0078125, + -1.5234375 + ], + "apply_runtime_tint": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-top", + "priority": "high", + "x": 156, + "width": 156, + "height": 153, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.578125 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top", + "priority": "high", + "x": 311, + "width": 311, + "height": 305, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.5859375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-top-mask", + "priority": "high", + "x": 154, + "width": 154, + "height": 148, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.53125 + ], + "apply_runtime_tint": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top-mask", + "priority": "high", + "x": 306, + "width": 306, + "height": 295, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.0078125, + -1.5234375 + ], + "apply_runtime_tint": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-top", + "priority": "high", + "x": 312, + "width": 156, + "height": 153, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.578125 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top", + "priority": "high", + "x": 622, + "width": 311, + "height": 305, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.5859375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-top-mask", + "priority": "high", + "x": 308, + "width": 154, + "height": 148, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.53125 + ], + "apply_runtime_tint": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top-mask", + "priority": "high", + "x": 612, + "width": 306, + "height": 295, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.0078125, + -1.5234375 + ], + "apply_runtime_tint": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:train-stop/train-stop-top", + "priority": "high", + "x": 468, + "width": 156, + "height": 153, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.578125 + ], + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top", + "priority": "high", + "x": 933, + "width": 311, + "height": 305, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.5859375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:train-stop/train-stop-top-mask", + "priority": "high", + "x": 462, + "width": 154, + "height": 148, + "frame_count": 1, + "line_length": 4, + "shift": [ + 0, + -1.53125 + ], + "apply_runtime_tint": true, + "scale": 1, + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-top-mask", + "priority": "high", + "x": 918, + "width": 306, + "height": 295, + "frame_count": 1, + "line_length": 4, + "shift": [ + -0.0078125, + -1.5234375 + ], + "apply_runtime_tint": true, + "scale": 0.5 + } + } + ] + } + }, + "light1": { + "light": { + "intensity": 0.5, + "size": 3, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "picture": { + "0": { + "filename": "entity:train-stop/train-stop-north-light-1", + "width": 9, + "height": 5, + "frame_count": 1, + "shift": [ + -2.203125, + -1.390625 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-north-light-1", + "width": 17, + "height": 9, + "frame_count": 1, + "shift": [ + -2.2109375, + -1.3828125 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:train-stop/train-stop-west-light-1", + "width": 3, + "height": 8, + "frame_count": 1, + "shift": [ + -0.953125, + -3.5 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-west-light-1", + "width": 6, + "height": 16, + "frame_count": 1, + "shift": [ + -0.953125, + -3.5 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:train-stop/train-stop-south-light-1", + "width": 8, + "height": 2, + "frame_count": 1, + "shift": [ + 2.1875, + -2.96875 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-south-light-1", + "width": 16, + "height": 4, + "frame_count": 1, + "shift": [ + 2.1875, + -2.96875 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:train-stop/train-stop-east-light-1", + "width": 3, + "height": 9, + "frame_count": 1, + "shift": [ + 1.078125, + 0.609375 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-east-light-1", + "width": 6, + "height": 16, + "frame_count": 1, + "shift": [ + 1.078125, + 0.609375 + ], + "scale": 0.5 + } + } + }, + "red_picture": { + "0": { + "filename": "entity:train-stop/train-stop-north-red-light-1", + "width": 9, + "height": 5, + "frame_count": 1, + "shift": [ + -2.203125, + -1.390625 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-north-red-light-1", + "width": 17, + "height": 9, + "frame_count": 1, + "shift": [ + -2.2109375, + -1.3828125 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:train-stop/train-stop-west-red-light-1", + "width": 3, + "height": 8, + "frame_count": 1, + "shift": [ + -0.953125, + -3.5 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-west-red-light-1", + "width": 6, + "height": 16, + "frame_count": 1, + "shift": [ + -0.953125, + -3.5 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:train-stop/train-stop-south-red-light-1", + "width": 8, + "height": 2, + "frame_count": 1, + "shift": [ + 2.1875, + -2.96875 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-south-red-light-1", + "width": 16, + "height": 4, + "frame_count": 1, + "shift": [ + 2.1875, + -2.96875 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:train-stop/train-stop-east-red-light-1", + "width": 3, + "height": 9, + "frame_count": 1, + "shift": [ + 1.078125, + 0.609375 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-east-red-light-1", + "width": 6, + "height": 16, + "frame_count": 1, + "shift": [ + 1.078125, + 0.609375 + ], + "scale": 0.5 + } + } + } + }, + "light2": { + "light": { + "intensity": 0.5, + "size": 3, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "picture": { + "0": { + "filename": "entity:train-stop/train-stop-north-light-2", + "width": 9, + "height": 5, + "frame_count": 1, + "shift": [ + -1.796875, + -1.359375 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-north-light-2", + "width": 16, + "height": 9, + "frame_count": 1, + "shift": [ + -1.796875, + -1.3671875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:train-stop/train-stop-west-light-2", + "width": 4, + "height": 8, + "frame_count": 1, + "shift": [ + -0.96875, + -3.21875 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-west-light-2", + "width": 7, + "height": 15, + "frame_count": 1, + "shift": [ + -0.9609375, + -3.2109375 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:train-stop/train-stop-south-light-2", + "width": 8, + "height": 3, + "frame_count": 1, + "shift": [ + 1.78125, + -2.953125 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-south-light-2", + "width": 16, + "height": 5, + "frame_count": 1, + "shift": [ + 1.78125, + -2.9609375 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:train-stop/train-stop-east-light-2", + "width": 3, + "height": 8, + "frame_count": 1, + "shift": [ + 1.078125, + 0.3125 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-east-light-2", + "width": 6, + "height": 16, + "frame_count": 1, + "shift": [ + 1.078125, + 0.3125 + ], + "scale": 0.5 + } + } + }, + "red_picture": { + "0": { + "filename": "entity:train-stop/train-stop-north-red-light-2", + "width": 9, + "height": 5, + "frame_count": 1, + "shift": [ + -1.796875, + -1.359375 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-north-red-light-2", + "width": 16, + "height": 9, + "frame_count": 1, + "shift": [ + -1.796875, + -1.3671875 + ], + "scale": 0.5 + } + }, + "2": { + "filename": "entity:train-stop/train-stop-west-red-light-2", + "width": 4, + "height": 8, + "frame_count": 1, + "shift": [ + -0.96875, + -3.21875 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-west-red-light-2", + "width": 7, + "height": 15, + "frame_count": 1, + "shift": [ + -0.9609375, + -3.2109375 + ], + "scale": 0.5 + } + }, + "4": { + "filename": "entity:train-stop/train-stop-south-red-light-2", + "width": 8, + "height": 3, + "frame_count": 1, + "shift": [ + 1.78125, + -2.953125 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-south-red-light-2", + "width": 16, + "height": 5, + "frame_count": 1, + "shift": [ + 1.78125, + -2.9609375 + ], + "scale": 0.5 + } + }, + "6": { + "filename": "entity:train-stop/train-stop-east-red-light-2", + "width": 3, + "height": 8, + "frame_count": 1, + "shift": [ + 1.078125, + 0.3125 + ], + "hr_version": { + "filename": "entity:train-stop/hr-train-stop-east-red-light-2", + "width": 6, + "height": 16, + "frame_count": 1, + "shift": [ + 1.078125, + 0.3125 + ], + "scale": 0.5 + } + } + } + }, + "color": { + "r": 0.95, + "g": 0, + "b": 0, + "a": 0.5 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/train-stop", + "volume": 0.8 + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.234375, + -1.5 + ], + "green": [ + 0.015625, + -1.40625 + ] + }, + "shadow": { + "red": [ + 2.09375, + 0.78125 + ], + "green": [ + 1.78125, + 0.796875 + ] + } + }, + { + "wire": { + "red": [ + -0.25, + -2.578125 + ], + "green": [ + -0.328125, + -2.40625 + ] + }, + "shadow": { + "red": [ + 3.75, + -0.109375 + ], + "green": [ + 3.4375, + -0.125 + ] + } + }, + { + "wire": { + "red": [ + -0.375, + -1.71875 + ], + "green": [ + -0.3125, + -1.484375 + ] + }, + "shadow": { + "red": [ + 2.609375, + 0.390625 + ], + "green": [ + 2.390625, + 0.4375 + ] + } + }, + { + "wire": { + "red": [ + 0.25, + -1.96875 + ], + "green": [ + 0.359375, + -1.78125 + ] + }, + "shadow": { + "red": [ + 3.59375, + 0.328125 + ], + "green": [ + 3.453125, + 0.359375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 260, + "y": 50, + "shift": [ + 0.328125, + -1.15625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 310, + "y": 46, + "shift": [ + 2.03125, + 0.96875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 310, + "y": 58, + "shift": [ + 0.328125, + -1.1875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 350, + "y": 56, + "shift": [ + 0.484375, + -1.0625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 300, + "y": 60, + "shift": [ + 0.328125, + -1.1875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 230, + "y": 44, + "shift": [ + 0.328125, + -1.1875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 240, + "y": 46, + "shift": [ + 0.328125, + -1.1875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 240, + "y": 46, + "shift": [ + 0.328125, + -1.1875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.046875, + -1.234375 + ], + "red_green_led_light_offset": [ + 0.171875, + -1.28125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 150, + "shift": [ + -0.15625, + -2.75 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + 3.578125, + -0.5 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 174, + "shift": [ + -0.15625, + -2.78125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 168, + "shift": [ + 0, + -2.65625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 180, + "shift": [ + -0.15625, + -2.78125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 132, + "shift": [ + -0.15625, + -2.78125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + -0.15625, + -2.78125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + -0.15625, + -2.78125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.359375, + -2.609375 + ], + "red_green_led_light_offset": [ + -0.34375, + -2.71875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + -0.671875, + -1.734375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 2.03125, + 0.140625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + -0.671875, + -1.765625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + -0.515625, + -1.640625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + -0.671875, + -1.765625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + -0.671875, + -1.765625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + -0.671875, + -1.765625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + -0.671875, + -1.765625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.640625, + -1.46875 + ], + "red_green_led_light_offset": [ + -0.65625, + -1.578125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 208, + "y": 150, + "shift": [ + 0.140625, + -1.671875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 248, + "y": 138, + "shift": [ + 3.203125, + 0.40625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 248, + "y": 174, + "shift": [ + 0.140625, + -1.703125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 280, + "y": 168, + "shift": [ + 0.296875, + -1.578125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 240, + "y": 180, + "shift": [ + 0.140625, + -1.703125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 184, + "y": 132, + "shift": [ + 0.140625, + -1.703125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 138, + "shift": [ + 0.140625, + -1.703125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 138, + "shift": [ + 0.140625, + -1.703125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.34375, + -1.546875 + ], + "red_green_led_light_offset": [ + 0.34375, + -1.65625 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_train_stopped_signal": { + "type": "virtual", + "name": "signal-T" + }, + "size": { + "width": 2, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "rail-signal": { + "type": "rail-signal", + "name": "rail-signal", + "icon": "entity:icons/rail-signal", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "building-direction-8-way", + "filter-directions", + "fast-replaceable-no-build-while-moving" + ], + "fast_replaceable_group": "rail-signal", + "minable": { + "mining_time": 0.5, + "result": "rail-signal" + }, + "max_health": 100, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.2, + -0.2 + ], + [ + 0.2, + 0.2 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "animation": { + "filename": "entity:rail-signal/rail-signal", + "priority": "high", + "width": 96, + "height": 96, + "frame_count": 3, + "direction_count": 8, + "hr_version": { + "filename": "entity:rail-signal/hr-rail-signal", + "priority": "high", + "width": 192, + "height": 192, + "frame_count": 3, + "direction_count": 8, + "scale": 0.5 + } + }, + "rail_piece": { + "filename": "entity:rail-signal/rail-signal-metal", + "line_length": 10, + "width": 96, + "height": 96, + "frame_count": 10, + "axially_symmetrical": false, + "hr_version": { + "filename": "entity:rail-signal/hr-rail-signal-metal", + "line_length": 10, + "width": 192, + "height": 192, + "frame_count": 10, + "axially_symmetrical": false, + "scale": 0.5 + } + }, + "green_light": { + "intensity": 0.2, + "size": 4, + "color": { + "g": 1 + } + }, + "orange_light": { + "intensity": 0.2, + "size": 4, + "color": { + "r": 1, + "g": 0.5 + } + }, + "red_light": { + "intensity": 0.2, + "size": 4, + "color": { + "r": 1 + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.03125, + -0.65625 + ], + "green": [ + 0.203125, + -0.78125 + ] + }, + "shadow": { + "red": [ + 0.140625, + -0.53125 + ], + "green": [ + 0.375, + -0.65625 + ] + } + }, + { + "wire": { + "red": [ + -0.5625, + -0.578125 + ], + "green": [ + -0.484375, + -0.78125 + ] + }, + "shadow": { + "red": [ + -0.4375, + -0.484375 + ], + "green": [ + -0.34375, + -0.671875 + ] + } + }, + { + "wire": { + "red": [ + -0.765625, + -0.09375 + ], + "green": [ + -0.90625, + -0.203125 + ] + }, + "shadow": { + "red": [ + -0.640625, + 0 + ], + "green": [ + -0.8125, + -0.125 + ] + } + }, + { + "wire": { + "red": [ + -0.40625, + 0.609375 + ], + "green": [ + -0.640625, + 0.609375 + ] + }, + "shadow": { + "red": [ + -0.328125, + 0.65625 + ], + "green": [ + -0.546875, + 0.671875 + ] + } + }, + { + "wire": { + "red": [ + 0.015625, + 0.6875 + ], + "green": [ + -0.140625, + 0.796875 + ] + }, + "shadow": { + "red": [ + 0.171875, + 0.796875 + ], + "green": [ + 0, + 0.90625 + ] + } + }, + { + "wire": { + "red": [ + 0.5, + 0.5625 + ], + "green": [ + 0.5625, + 0.75 + ] + }, + "shadow": { + "red": [ + 0.640625, + 0.671875 + ], + "green": [ + 0.71875, + 0.875 + ] + } + }, + { + "wire": { + "red": [ + 0.828125, + 0 + ], + "green": [ + 1, + 0.125 + ] + }, + "shadow": { + "red": [ + 0.984375, + 0.125 + ], + "green": [ + 1.171875, + 0.25 + ] + } + }, + { + "wire": { + "red": [ + 0.4375, + -0.5625 + ], + "green": [ + 0.703125, + -0.5625 + ] + }, + "shadow": { + "red": [ + 0.625, + -0.4375 + ], + "green": [ + 0.875, + -0.421875 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 260, + "y": 0, + "shift": [ + 0.234375, + -0.34375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 310, + "y": 0, + "shift": [ + 0.3125, + -0.296875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 310, + "y": 0, + "shift": [ + 0.234375, + -0.375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 350, + "y": 0, + "shift": [ + 0.390625, + -0.25 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 300, + "y": 0, + "shift": [ + 0.234375, + -0.375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 230, + "y": 0, + "shift": [ + 0.234375, + -0.375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + 0.234375, + -0.375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + 0.234375, + -0.375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.390625, + -0.625 + ], + "red_green_led_light_offset": [ + 0.28125, + -0.546875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 312, + "y": 0, + "shift": [ + -0.21875, + -0.421875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + -0.140625, + -0.375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + -0.21875, + -0.453125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 420, + "y": 0, + "shift": [ + -0.0625, + -0.328125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 360, + "y": 0, + "shift": [ + -0.21875, + -0.453125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 276, + "y": 0, + "shift": [ + -0.21875, + -0.453125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + -0.21875, + -0.453125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + -0.21875, + -0.453125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.234375, + -0.75 + ], + "red_green_led_light_offset": [ + -0.234375, + -0.625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 364, + "y": 0, + "shift": [ + -0.484375, + -0.109375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 434, + "y": 0, + "shift": [ + -0.40625, + -0.0625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 434, + "y": 0, + "shift": [ + -0.484375, + -0.140625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 490, + "y": 0, + "shift": [ + -0.328125, + -0.015625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 420, + "y": 0, + "shift": [ + -0.484375, + -0.140625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 322, + "y": 0, + "shift": [ + -0.484375, + -0.140625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 336, + "y": 0, + "shift": [ + -0.484375, + -0.140625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 336, + "y": 0, + "shift": [ + -0.484375, + -0.140625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.65625, + -0.375 + ], + "red_green_led_light_offset": [ + -0.546875, + -0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.390625, + 0.4375 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.3125, + 0.484375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.390625, + 0.40625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.234375, + 0.53125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.390625, + 0.40625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.390625, + 0.40625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.390625, + 0.40625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.390625, + 0.40625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.609375, + 0.296875 + ], + "red_green_led_light_offset": [ + -0.453125, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + -0.1875, + 0.640625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + -0.109375, + 0.6875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + -0.1875, + 0.609375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 0, + "shift": [ + -0.03125, + 0.734375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.1875, + 0.609375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.1875, + 0.609375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 0, + "shift": [ + -0.1875, + 0.609375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 0, + "shift": [ + -0.1875, + 0.609375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.328125, + 0.59375 + ], + "red_green_led_light_offset": [ + -0.21875, + 0.53125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0.21875, + 0.703125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.296875, + 0.75 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.21875, + 0.671875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 0, + "shift": [ + 0.375, + 0.796875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + 0.21875, + 0.671875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + 0.21875, + 0.671875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 0, + "shift": [ + 0.21875, + 0.671875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 0, + "shift": [ + 0.21875, + 0.671875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.25, + 0.703125 + ], + "red_green_led_light_offset": [ + 0.25, + 0.59375 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0.578125, + 0.28125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.65625, + 0.328125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.578125, + 0.25 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 210, + "y": 0, + "shift": [ + 0.734375, + 0.375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + 0.578125, + 0.25 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + 0.578125, + 0.25 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 0, + "shift": [ + 0.578125, + 0.25 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 0, + "shift": [ + 0.578125, + 0.25 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.75, + 0.21875 + ], + "red_green_led_light_offset": [ + 0.65625, + 0.140625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 208, + "y": 0, + "shift": [ + 0.40625, + -0.1875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 248, + "y": 0, + "shift": [ + 0.484375, + -0.140625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 248, + "y": 0, + "shift": [ + 0.40625, + -0.21875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 280, + "y": 0, + "shift": [ + 0.5625, + -0.09375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + 0.40625, + -0.21875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 184, + "y": 0, + "shift": [ + 0.40625, + -0.21875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.40625, + -0.21875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + 0.40625, + -0.21875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.640625, + -0.359375 + ], + "red_green_led_light_offset": [ + 0.484375, + -0.359375 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_red_output_signal": { + "type": "virtual", + "name": "signal-red" + }, + "default_orange_output_signal": { + "type": "virtual", + "name": "signal-yellow" + }, + "default_green_output_signal": { + "type": "virtual", + "name": "signal-green" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "rail-chain-signal": { + "type": "rail-chain-signal", + "name": "rail-chain-signal", + "icon": "entity:icons/rail-chain-signal", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation", + "building-direction-8-way", + "filter-directions", + "fast-replaceable-no-build-while-moving" + ], + "fast_replaceable_group": "rail-signal", + "minable": { + "mining_time": 0.5, + "result": "rail-chain-signal" + }, + "max_health": 100, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.2, + -0.2 + ], + [ + 0.2, + 0.2 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "animation": { + "filename": "entity:rail-chain-signal/rail-chain-signal", + "priority": "high", + "line_length": 5, + "width": 160, + "height": 160, + "frame_count": 5, + "axially_symmetrical": false, + "direction_count": 8, + "hr_version": { + "filename": "entity:rail-chain-signal/hr-rail-chain-signal", + "priority": "high", + "line_length": 5, + "width": 320, + "height": 320, + "frame_count": 5, + "axially_symmetrical": false, + "direction_count": 8, + "scale": 0.5 + } + }, + "rail_piece": { + "filename": "entity:rail-chain-signal/rail-chain-signal-metal", + "line_length": 10, + "width": 192, + "height": 192, + "frame_count": 10, + "axially_symmetrical": false, + "hr_version": { + "filename": "entity:rail-chain-signal/hr-rail-chain-signal-metal", + "line_length": 10, + "width": 384, + "height": 384, + "frame_count": 10, + "axially_symmetrical": false, + "scale": 0.5 + } + }, + "selection_box_offsets": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "green_light": { + "intensity": 0.3, + "size": 4, + "color": { + "r": 0.592157, + "g": 1, + "b": 0.117647 + } + }, + "orange_light": { + "intensity": 0.3, + "size": 4, + "color": { + "r": 0.815686, + "g": 0.670588, + "b": 0.431373 + } + }, + "red_light": { + "intensity": 0.3, + "size": 4, + "color": { + "r": 0.784314, + "g": 0.431373, + "b": 0.431373 + } + }, + "blue_light": { + "intensity": 0.3, + "size": 4, + "color": { + "r": 0.431373, + "g": 0.694118, + "b": 0.623529 + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + -0.03125, + 0.4375 + ], + "green": [ + -0.171875, + 0.328125 + ] + }, + "shadow": { + "red": [ + 0.09375, + 0.53125 + ], + "green": [ + -0.078125, + 0.40625 + ] + } + }, + { + "wire": { + "red": [ + -0.265625, + 0.4375 + ], + "green": [ + -0.5, + 0.4375 + ] + }, + "shadow": { + "red": [ + -0.1875, + 0.484375 + ], + "green": [ + -0.40625, + 0.5 + ] + } + }, + { + "wire": { + "red": [ + 0.15625, + 0.328125 + ], + "green": [ + 0, + 0.4375 + ] + }, + "shadow": { + "red": [ + 0.3125, + 0.4375 + ], + "green": [ + 0.140625, + 0.546875 + ] + } + }, + { + "wire": { + "red": [ + 0.390625, + 0.125 + ], + "green": [ + 0.453125, + 0.3125 + ] + }, + "shadow": { + "red": [ + 0.53125, + 0.234375 + ], + "green": [ + 0.609375, + 0.4375 + ] + } + }, + { + "wire": { + "red": [ + 0.421875, + 0.03125 + ], + "green": [ + 0.59375, + 0.15625 + ] + }, + "shadow": { + "red": [ + 0.578125, + 0.15625 + ], + "green": [ + 0.765625, + 0.28125 + ] + } + }, + { + "wire": { + "red": [ + -0.640625, + 0.09375 + ], + "green": [ + -0.375, + 0.09375 + ] + }, + "shadow": { + "red": [ + -0.453125, + 0.21875 + ], + "green": [ + -0.203125, + 0.234375 + ] + } + }, + { + "wire": { + "red": [ + -0.640625, + 0.1875 + ], + "green": [ + -0.46875, + 0.0625 + ] + }, + "shadow": { + "red": [ + -0.53125, + 0.3125 + ], + "green": [ + -0.296875, + 0.1875 + ] + } + }, + { + "wire": { + "red": [ + -0.40625, + 0.421875 + ], + "green": [ + -0.328125, + 0.21875 + ] + }, + "shadow": { + "red": [ + -0.28125, + 0.515625 + ], + "green": [ + -0.1875, + 0.328125 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 364, + "y": 0, + "shift": [ + 0.25, + 0.421875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 434, + "y": 0, + "shift": [ + 0.328125, + 0.46875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 434, + "y": 0, + "shift": [ + 0.25, + 0.390625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 490, + "y": 0, + "shift": [ + 0.40625, + 0.515625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 420, + "y": 0, + "shift": [ + 0.25, + 0.390625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 322, + "y": 0, + "shift": [ + 0.25, + 0.390625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 336, + "y": 0, + "shift": [ + 0.25, + 0.390625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 336, + "y": 0, + "shift": [ + 0.25, + 0.390625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.078125, + 0.15625 + ], + "red_green_led_light_offset": [ + 0.1875, + 0.234375 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.25, + 0.265625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.171875, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.25, + 0.234375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.09375, + 0.359375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.25, + 0.234375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.25, + 0.234375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.25, + 0.234375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 0, + "shift": [ + -0.25, + 0.234375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.46875, + 0.125 + ], + "red_green_led_light_offset": [ + -0.3125, + 0.125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 0, + "shift": [ + -0.046875, + 0.28125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + 0.03125, + 0.328125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 0, + "shift": [ + -0.046875, + 0.25 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 0, + "shift": [ + 0.109375, + 0.375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 0, + "shift": [ + -0.046875, + 0.25 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 0, + "shift": [ + -0.046875, + 0.25 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 0, + "shift": [ + -0.046875, + 0.25 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 0, + "shift": [ + -0.046875, + 0.25 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.1875, + 0.234375 + ], + "red_green_led_light_offset": [ + -0.078125, + 0.171875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 0, + "shift": [ + 0.109375, + 0.265625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.1875, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 0, + "shift": [ + 0.109375, + 0.234375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 0, + "shift": [ + 0.265625, + 0.359375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 0, + "shift": [ + 0.109375, + 0.234375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 0, + "shift": [ + 0.109375, + 0.234375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 0, + "shift": [ + 0.109375, + 0.234375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 0, + "shift": [ + 0.109375, + 0.234375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.140625, + 0.265625 + ], + "red_green_led_light_offset": [ + 0.140625, + 0.15625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 156, + "y": 0, + "shift": [ + 0.171875, + 0.3125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.25, + 0.359375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 186, + "y": 0, + "shift": [ + 0.171875, + 0.28125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 210, + "y": 0, + "shift": [ + 0.328125, + 0.40625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 180, + "y": 0, + "shift": [ + 0.171875, + 0.28125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 138, + "y": 0, + "shift": [ + 0.171875, + 0.28125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 0, + "shift": [ + 0.171875, + 0.28125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 0, + "shift": [ + 0.171875, + 0.28125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.34375, + 0.25 + ], + "red_green_led_light_offset": [ + 0.25, + 0.171875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 208, + "y": 0, + "shift": [ + -0.671875, + 0.46875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 248, + "y": 0, + "shift": [ + -0.59375, + 0.515625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 248, + "y": 0, + "shift": [ + -0.671875, + 0.4375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 280, + "y": 0, + "shift": [ + -0.515625, + 0.5625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + -0.671875, + 0.4375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 184, + "y": 0, + "shift": [ + -0.671875, + 0.4375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + -0.671875, + 0.4375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 192, + "y": 0, + "shift": [ + -0.671875, + 0.4375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.4375, + 0.296875 + ], + "red_green_led_light_offset": [ + -0.59375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 260, + "y": 0, + "shift": [ + -0.4375, + 0.5 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 310, + "y": 0, + "shift": [ + -0.359375, + 0.546875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 310, + "y": 0, + "shift": [ + -0.4375, + 0.46875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 350, + "y": 0, + "shift": [ + -0.28125, + 0.59375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 300, + "y": 0, + "shift": [ + -0.4375, + 0.46875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 230, + "y": 0, + "shift": [ + -0.4375, + 0.46875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + -0.4375, + 0.46875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 240, + "y": 0, + "shift": [ + -0.4375, + 0.46875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.28125, + 0.21875 + ], + "red_green_led_light_offset": [ + -0.390625, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 312, + "y": 0, + "shift": [ + -0.0625, + 0.578125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + 0.015625, + 0.625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 372, + "y": 0, + "shift": [ + -0.0625, + 0.546875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 420, + "y": 0, + "shift": [ + 0.09375, + 0.671875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 360, + "y": 0, + "shift": [ + -0.0625, + 0.546875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 276, + "y": 0, + "shift": [ + -0.0625, + 0.546875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + -0.0625, + 0.546875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 288, + "y": 0, + "shift": [ + -0.0625, + 0.546875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.078125, + 0.25 + ], + "red_green_led_light_offset": [ + -0.078125, + 0.375 + ] + } + ], + "circuit_wire_max_distance": 9, + "default_red_output_signal": { + "type": "virtual", + "name": "signal-red" + }, + "default_orange_output_signal": { + "type": "virtual", + "name": "signal-yellow" + }, + "default_green_output_signal": { + "type": "virtual", + "name": "signal-green" + }, + "default_blue_output_signal": { + "type": "virtual", + "name": "signal-blue" + }, + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "lab": { + "type": "lab", + "name": "lab", + "icon": "entity:icons/lab", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "lab" + }, + "max_health": 150, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "light": { + "intensity": 0.75, + "size": 8, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "on_animation": { + "layers": [ + { + "filename": "entity:lab/lab", + "width": 98, + "height": 87, + "frame_count": 33, + "line_length": 11, + "animation_speed": 0.3333333333333333, + "shift": [ + 0, + 0.046875 + ], + "hr_version": { + "filename": "entity:lab/hr-lab", + "width": 194, + "height": 174, + "frame_count": 33, + "line_length": 11, + "animation_speed": 0.3333333333333333, + "shift": [ + 0, + 0.046875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:lab/lab-integration", + "width": 122, + "height": 81, + "frame_count": 1, + "line_length": 1, + "repeat_count": 33, + "animation_speed": 0.3333333333333333, + "shift": [ + 0, + 0.484375 + ], + "hr_version": { + "filename": "entity:lab/hr-lab-integration", + "width": 242, + "height": 162, + "frame_count": 1, + "line_length": 1, + "repeat_count": 33, + "animation_speed": 0.3333333333333333, + "shift": [ + 0, + 0.484375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:lab/lab-shadow", + "width": 122, + "height": 68, + "frame_count": 1, + "line_length": 1, + "repeat_count": 33, + "animation_speed": 0.3333333333333333, + "shift": [ + 0.40625, + 0.34375 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:lab/hr-lab-shadow", + "width": 242, + "height": 136, + "frame_count": 1, + "line_length": 1, + "repeat_count": 33, + "animation_speed": 0.3333333333333333, + "shift": [ + 0.40625, + 0.34375 + ], + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "off_animation": { + "layers": [ + { + "filename": "entity:lab/lab", + "width": 98, + "height": 87, + "frame_count": 1, + "shift": [ + 0, + 0.046875 + ], + "hr_version": { + "filename": "entity:lab/hr-lab", + "width": 194, + "height": 174, + "frame_count": 1, + "shift": [ + 0, + 0.046875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:lab/lab-integration", + "width": 122, + "height": 81, + "frame_count": 1, + "shift": [ + 0, + 0.484375 + ], + "hr_version": { + "filename": "entity:lab/hr-lab-integration", + "width": 242, + "height": 162, + "frame_count": 1, + "shift": [ + 0, + 0.484375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:lab/lab-shadow", + "width": 122, + "height": 68, + "frame_count": 1, + "shift": [ + 0.40625, + 0.34375 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:lab/hr-lab-shadow", + "width": 242, + "height": 136, + "frame_count": 1, + "shift": [ + 0.40625, + 0.34375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "working_sound": { + "sound": { + "filename": "entity:sound/lab", + "volume": 0.7 + }, + "apparent_volume": 1 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input" + }, + "energy_usage": "60kW", + "researching_speed": 1, + "inputs": [ + "science-pack-1", + "science-pack-2", + "science-pack-3", + "military-science-pack", + "production-science-pack", + "high-tech-science-pack", + "space-science-pack" + ], + "module_specification": { + "module_slots": 2, + "max_entity_info_module_icons_per_row": 3, + "max_entity_info_module_icon_rows": 1, + "module_info_icon_shift": [ + 0, + 0.9 + ] + }, + "size": { + "width": 3, + "height": 3 + } + }, + "logistic-chest-passive-provider": { + "type": "logistic-container", + "name": "logistic-chest-passive-provider", + "icon": "entity:icons/logistic-chest-passive-provider", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "logistic-chest-passive-provider" + }, + "max_health": 350, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "impact", + "percent": 60 + } + ], + "fast_replaceable_group": "container", + "inventory_size": 48, + "logistic_mode": "passive-provider", + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:logistic-chest/logistic-chest-passive-provider", + "priority": "extra-high", + "width": 38, + "height": 32, + "shift": [ + 0.09375, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "logistic-chest-active-provider": { + "type": "logistic-container", + "name": "logistic-chest-active-provider", + "icon": "entity:icons/logistic-chest-active-provider", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "logistic-chest-active-provider" + }, + "max_health": 350, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "impact", + "percent": 60 + } + ], + "fast_replaceable_group": "container", + "inventory_size": 48, + "logistic_mode": "active-provider", + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:logistic-chest/logistic-chest-active-provider", + "priority": "extra-high", + "width": 38, + "height": 32, + "shift": [ + 0.09375, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "logistic-chest-storage": { + "type": "logistic-container", + "name": "logistic-chest-storage", + "icon": "entity:icons/logistic-chest-storage", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "logistic-chest-storage" + }, + "max_health": 350, + "logistic_slots_count": 1, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "impact", + "percent": 60 + } + ], + "fast_replaceable_group": "container", + "inventory_size": 48, + "logistic_mode": "storage", + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:logistic-chest/logistic-chest-storage", + "priority": "extra-high", + "width": 38, + "height": 32, + "shift": [ + 0.09375, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "logistic-chest-buffer": { + "type": "logistic-container", + "name": "logistic-chest-buffer", + "icon": "entity:icons/logistic-chest-buffer", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "logistic-chest-buffer" + }, + "max_health": 350, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "impact", + "percent": 60 + } + ], + "fast_replaceable_group": "container", + "inventory_size": 48, + "logistic_mode": "buffer", + "logistic_slots_count": 12, + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:logistic-chest/logistic-chest-buffer", + "priority": "extra-high", + "width": 38, + "height": 32, + "shift": [ + 0.09375, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "logistic-chest-requester": { + "type": "logistic-container", + "name": "logistic-chest-requester", + "icon": "entity:icons/logistic-chest-requester", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "logistic-chest-requester" + }, + "max_health": 350, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "impact", + "percent": 60 + } + ], + "fast_replaceable_group": "container", + "inventory_size": 48, + "logistic_mode": "requester", + "logistic_slots_count": 12, + "open_sound": { + "filename": "entity:sound/metallic-chest-open", + "volume": 0.65 + }, + "close_sound": { + "filename": "entity:sound/metallic-chest-close", + "volume": 0.7 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "picture": { + "filename": "entity:logistic-chest/logistic-chest-requester", + "priority": "extra-high", + "width": 38, + "height": 32, + "shift": [ + 0.09375, + 0 + ] + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.390625, + 0.21875 + ], + "green": [ + 0.453125, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.890625, + 0.5625 + ], + "green": [ + 0.671875, + 0.609375 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.09375, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.3125, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.25, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.09375, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.125, + 0.46875 + ], + "red_green_led_light_offset": [ + 0.109375, + 0.359375 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "rocket-silo": { + "type": "rocket-silo", + "name": "rocket-silo", + "icon": "entity:icons/rocket-silo", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "crafting_categories": [ + "rocket-building" + ], + "ingredient_count": 3, + "rocket_parts_required": 100, + "crafting_speed": 1, + "rocket_result_inventory_size": 1, + "module_specification": { + "module_slots": 4, + "module_info_icon_shift": [ + 0, + 4.3 + ] + }, + "fixed_recipe": "rocket-part", + "allowed_effects": [ + "consumption", + "speed", + "productivity", + "pollution" + ], + "minable": { + "hardness": 0.2, + "mining_time": 5, + "result": "rocket-silo" + }, + "max_health": 5000, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -4.2, + -4.7 + ], + [ + 4.2, + 4.7 + ] + ], + "selection_box": [ + [ + -4.5, + -5 + ], + [ + 4.5, + 5 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 60 + }, + { + "type": "impact", + "percent": 60 + } + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "energy_source": { + "type": "electric", + "usage_priority": "primary-input" + }, + "energy_usage": "250kW", + "idle_energy_usage": "10KW", + "lamp_energy_usage": "10KW", + "active_energy_usage": "3990KW", + "rocket_entity": "rocket-silo-rocket", + "times_to_blink": 3, + "light_blinking_speed": 0.005555555555555556, + "door_opening_speed": 0.00392156862745098, + "base_light": [ + { + "type": "oriented", + "picture": { + "filename": "entity:graphics/light-cone", + "priority": "extra-high", + "flags": [ + "light" + ], + "scale": 2, + "width": 200, + "height": 200 + }, + "shift": [ + 0.25, + 1.25 + ], + "size": 1, + "intensity": 1, + "rotation_shift": 0.6, + "color": { + "r": 0.7, + "g": 0.9, + "b": 1 + } + }, + { + "type": "oriented", + "picture": { + "filename": "entity:graphics/light-cone", + "priority": "extra-high", + "flags": [ + "light" + ], + "scale": 2, + "width": 200, + "height": 200 + }, + "shift": [ + -0.25, + 1 + ], + "size": 1, + "intensity": 1, + "rotation_shift": 0.5, + "color": { + "r": 0.7, + "g": 0.9, + "b": 1 + } + } + ], + "base_engine_light": { + "intensity": 1, + "size": 25, + "shift": [ + 0, + 1.5 + ] + }, + "shadow_sprite": { + "filename": "entity:00-shadow/00-silo-shadow", + "priority": "medium", + "width": 447, + "height": 351, + "draw_as_shadow": true, + "slice": 2, + "shift": [ + 1.5, + 0.5 + ] + }, + "satellite_shadow_animation": { + "filename": "entity:00-shadow/00-satellite-shadow", + "priority": "medium", + "width": 44, + "height": 22, + "frame_count": 12, + "line_length": 4, + "animation_speed": 0.25, + "draw_as_shadow": true, + "shift": [ + 7.875, + -2.1875 + ] + }, + "hole_sprite": { + "filename": "entity:01-hole/01-hole", + "width": 224, + "height": 128, + "shift": [ + 0, + 2 + ] + }, + "hole_light_sprite": { + "filename": "entity:01-hole/01-hole-light", + "width": 224, + "height": 128, + "shift": [ + 0, + 2 + ] + }, + "rocket_shadow_overlay_sprite": { + "filename": "entity:03-12-rocket-over/03-rocket-over-shadow-over-rocket", + "width": 224, + "height": 128, + "shift": [ + 0, + 2 + ] + }, + "rocket_glow_overlay_sprite": { + "filename": "entity:03-12-rocket-over/03-rocket-over-glow", + "blend_mode": "additive", + "width": 224, + "height": 128, + "shift": [ + 0, + 2 + ] + }, + "door_back_sprite": { + "filename": "entity:04-05-doors/04-door-back", + "width": 192, + "height": 108, + "shift": [ + 0, + 1.53125 + ] + }, + "door_back_open_offset": [ + 1.75, + -1.75 + ], + "door_front_sprite": { + "filename": "entity:04-05-doors/05-door-front", + "width": 192, + "height": 112, + "shift": [ + 0, + 2.0625 + ] + }, + "door_front_open_offset": [ + -1.75, + 1.75 + ], + "base_day_sprite": { + "filename": "entity:06-silo-base/06-silo-base-day", + "width": 352, + "height": 384, + "shift": [ + 0, + 0 + ] + }, + "base_night_sprite": { + "filename": "entity:06-silo-base/06-silo-base-night", + "width": 352, + "height": 384, + "shift": [ + 0, + 0 + ] + }, + "red_lights_back_sprites": { + "layers": [ + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 1.34375, + 0.28125 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 2.3125, + 0.9375 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 2.65625, + 1.90625 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + -2.65625, + 1.90625 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + -2.3125, + 0.9375 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + -1.34375, + 0.28125 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 0, + 0 + ] + } + ] + }, + "red_lights_front_sprites": { + "layers": [ + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 2.3125, + 2.8125 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 1.34375, + 3.40625 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + 0, + 3.75 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + -1.34375, + 3.40625 + ] + }, + { + "filename": "entity:07-red-lights-back/red-light", + "width": 32, + "height": 32, + "shift": [ + -2.3125, + 2.8125 + ] + } + ] + }, + "satellite_animation": { + "filename": "entity:08-arms-back-satellite-animation/satellite", + "priority": "medium", + "width": 27, + "height": 28, + "frame_count": 12, + "line_length": 4, + "animation_speed": 0.25, + "shift": [ + 3.3125, + -4.82813 + ] + }, + "arm_01_back_animation": { + "filename": "entity:08-arms-back-satellite-animation/arm-01-back", + "priority": "medium", + "width": 54, + "height": 50, + "frame_count": 12, + "line_length": 4, + "animation_speed": 0.2, + "shift": [ + -1.34375, + -0.875 + ] + }, + "arm_02_right_animation": { + "filename": "entity:08-arms-back-satellite-animation/arm-02-right", + "priority": "medium", + "width": 81, + "height": 43, + "frame_count": 12, + "line_length": 4, + "animation_speed": 0.2, + "shift": [ + 2.71875, + 0.96875 + ] + }, + "arm_03_front_animation": { + "filename": "entity:13-arm-front-red-lights-front/arm-03-front", + "priority": "medium", + "width": 54, + "height": 70, + "frame_count": 12, + "line_length": 4, + "animation_speed": 0.2, + "shift": [ + -1.34375, + 2.4375 + ] + }, + "base_front_sprite": { + "filename": "entity:14-silo-front/14-silo-front", + "width": 352, + "height": 96, + "shift": [ + 0, + 3.5 + ] + }, + "silo_fade_out_start_distance": 8, + "silo_fade_out_end_distance": 15, + "alarm_trigger": [ + { + "type": "play-sound", + "sound": [ + { + "filename": "entity:sound/silo-alarm", + "volume": 1.5 + } + ] + } + ], + "clamps_on_trigger": [ + { + "type": "play-sound", + "sound": [ + { + "filename": "entity:sound/silo-clamps-on", + "volume": 1.5 + } + ] + } + ], + "clamps_off_trigger": [ + { + "type": "play-sound", + "sound": [ + { + "filename": "entity:sound/silo-clamps-off", + "volume": 1.5 + } + ] + } + ], + "doors_trigger": [ + { + "type": "play-sound", + "sound": [ + { + "filename": "entity:sound/silo-doors", + "volume": 1.5 + } + ] + } + ], + "raise_rocket_trigger": [ + { + "type": "play-sound", + "sound": [ + { + "filename": "entity:sound/silo-raise-rocket", + "volume": 1.5 + } + ] + } + ], + "size": { + "width": 9, + "height": 10 + } + }, + "roboport": { + "type": "roboport", + "name": "roboport", + "icon": "entity:icons/roboport", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "roboport" + }, + "max_health": 500, + "corpse": "big-remnants", + "collision_box": [ + [ + -1.7, + -1.7 + ], + [ + 1.7, + 1.7 + ] + ], + "selection_box": [ + [ + -2, + -2 + ], + [ + 2, + 2 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 60 + }, + { + "type": "impact", + "percent": 30 + } + ], + "dying_explosion": "medium-explosion", + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "input_flow_limit": "5MW", + "buffer_capacity": "100MJ" + }, + "recharge_minimum": "40MJ", + "energy_usage": "50kW", + "charging_energy": "1000kW", + "logistics_radius": 25, + "construction_radius": 55, + "charge_approach_distance": 5, + "robot_slots_count": 7, + "material_slots_count": 7, + "stationing_offset": [ + 0, + 0 + ], + "charging_offsets": [ + [ + -1.5, + -0.5 + ], + [ + 1.5, + -0.5 + ], + [ + 1.5, + 1.5 + ], + [ + -1.5, + 1.5 + ] + ], + "base": { + "layers": [ + { + "filename": "entity:roboport/roboport-base", + "width": 143, + "height": 135, + "shift": [ + 0.5, + 0.25 + ], + "hr_version": { + "filename": "entity:roboport/hr-roboport-base", + "width": 228, + "height": 277, + "shift": [ + 0.0625, + 0.2421875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:roboport/roboport-shadow", + "width": 147, + "height": 102, + "draw_as_shadow": true, + "shift": [ + 0.890625, + 0.6015625 + ], + "hr_version": { + "filename": "entity:roboport/hr-roboport-shadow", + "width": 294, + "height": 201, + "draw_as_shadow": true, + "shift": [ + 0.890625, + 0.6015625 + ], + "scale": 0.5 + } + } + ] + }, + "base_patch": { + "filename": "entity:roboport/roboport-base-patch", + "priority": "medium", + "width": 69, + "height": 50, + "frame_count": 1, + "shift": [ + 0.03125, + 0.203125 + ], + "hr_version": { + "filename": "entity:roboport/hr-roboport-base-patch", + "priority": "medium", + "width": 138, + "height": 100, + "frame_count": 1, + "shift": [ + 0.046875, + 0.15625 + ], + "scale": 0.5 + } + }, + "base_animation": { + "filename": "entity:roboport/roboport-base-animation", + "priority": "medium", + "width": 42, + "height": 31, + "frame_count": 8, + "animation_speed": 0.5, + "shift": [ + -0.5315, + -1.9375 + ], + "hr_version": { + "filename": "entity:roboport/hr-roboport-base-animation", + "priority": "medium", + "width": 83, + "height": 59, + "frame_count": 8, + "animation_speed": 0.5, + "shift": [ + -0.5546875, + -1.9140625 + ], + "scale": 0.5 + } + }, + "door_animation_up": { + "filename": "entity:roboport/roboport-door-up", + "priority": "medium", + "width": 52, + "height": 20, + "frame_count": 16, + "shift": [ + 0.015625, + -0.890625 + ], + "hr_version": { + "filename": "entity:roboport/hr-roboport-door-up", + "priority": "medium", + "width": 97, + "height": 38, + "frame_count": 16, + "shift": [ + -0.0078125, + -0.921875 + ], + "scale": 0.5 + } + }, + "door_animation_down": { + "filename": "entity:roboport/roboport-door-down", + "priority": "medium", + "width": 52, + "height": 22, + "frame_count": 16, + "shift": [ + 0.015625, + -0.234375 + ], + "hr_version": { + "filename": "entity:roboport/hr-roboport-door-down", + "priority": "medium", + "width": 97, + "height": 41, + "frame_count": 16, + "shift": [ + -0.0078125, + -0.3046875 + ], + "scale": 0.5 + } + }, + "recharging_animation": { + "filename": "entity:roboport/roboport-recharging", + "priority": "high", + "width": 37, + "height": 35, + "frame_count": 16, + "scale": 1.5, + "animation_speed": 0.5 + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/roboport-working", + "volume": 0.6 + }, + "max_sounds_per_type": 3, + "audible_distance_modifier": 0.5, + "probability": 0.0033333333333333335 + }, + "recharging_light": { + "intensity": 0.4, + "size": 5, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "request_to_open_door_timeout": 15, + "spawn_and_station_height": -0.1, + "draw_logistic_radius_visualization": true, + "draw_construction_radius_visualization": true, + "open_door_trigger_effect": [ + { + "type": "play-sound", + "sound": { + "filename": "entity:sound/roboport-door", + "volume": 1.2 + } + } + ], + "close_door_trigger_effect": [ + { + "type": "play-sound", + "sound": { + "filename": "entity:sound/roboport-door", + "volume": 0.75 + } + } + ], + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.875, + 1.328125 + ], + "green": [ + 0.9375, + 1.5625 + ] + }, + "shadow": { + "red": [ + 1.296875, + 2.09375 + ], + "green": [ + 1.078125, + 2.140625 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.578125, + 1.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.578125, + 1.28125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.734375, + 1.40625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.578125, + 1.28125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.578125, + 1.28125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.578125, + 1.28125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.578125, + 1.28125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.609375, + 1.578125 + ], + "red_green_led_light_offset": [ + 0.59375, + 1.46875 + ] + }, + "circuit_wire_max_distance": 9, + "default_available_logistic_output_signal": { + "type": "virtual", + "name": "signal-X" + }, + "default_total_logistic_output_signal": { + "type": "virtual", + "name": "signal-Y" + }, + "default_available_construction_output_signal": { + "type": "virtual", + "name": "signal-Z" + }, + "default_total_construction_output_signal": { + "type": "virtual", + "name": "signal-T" + }, + "size": { + "width": 4, + "height": 4 + } + }, + "storage-tank": { + "type": "storage-tank", + "name": "storage-tank", + "icon": "entity:icons/storage-tank", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 1.5, + "result": "storage-tank" + }, + "max_health": 500, + "corpse": "medium-remnants", + "collision_box": [ + [ + -1.3, + -1.3 + ], + [ + 1.3, + 1.3 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "fluid_box": { + "base_area": 250, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "position": [ + -1, + -2 + ] + }, + { + "position": [ + 2, + 1 + ] + }, + { + "position": [ + 1, + 2 + ] + }, + { + "position": [ + -2, + -1 + ] + } + ] + }, + "two_direction_only": true, + "window_bounding_box": [ + [ + -0.125, + 0.6875 + ], + [ + 0.1875, + 1.1875 + ] + ], + "pictures": { + "picture": { + "sheets": [ + { + "filename": "entity:storage-tank/storage-tank", + "priority": "extra-high", + "frames": 2, + "width": 110, + "height": 108, + "shift": [ + 0, + 0.125 + ], + "hr_version": { + "filename": "entity:storage-tank/hr-storage-tank", + "priority": "extra-high", + "frames": 2, + "width": 219, + "height": 215, + "shift": [ + -0.0078125, + 0.1171875 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:storage-tank/storage-tank-shadow", + "priority": "extra-high", + "frames": 2, + "width": 146, + "height": 77, + "shift": [ + 0.9375, + 0.703125 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:storage-tank/hr-storage-tank-shadow", + "priority": "extra-high", + "frames": 2, + "width": 291, + "height": 153, + "shift": [ + 0.9296875, + 0.6953125 + ], + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "fluid_background": { + "filename": "entity:storage-tank/fluid-background", + "priority": "extra-high", + "width": 32, + "height": 15 + }, + "window_background": { + "filename": "entity:storage-tank/window-background", + "priority": "extra-high", + "width": 17, + "height": 24, + "hr_version": { + "filename": "entity:storage-tank/hr-window-background", + "priority": "extra-high", + "width": 34, + "height": 48, + "scale": 0.5, + "shift": [ + 0, + 1 + ] + }, + "shift": [ + 0, + 1 + ] + }, + "flow_sprite": { + "filename": "entity:pipe/fluid-flow-low-temperature", + "priority": "extra-high", + "width": 160, + "height": 20 + }, + "gas_flow": { + "filename": "entity:pipe/steam", + "priority": "extra-high", + "line_length": 10, + "width": 24, + "height": 15, + "frame_count": 60, + "axially_symmetrical": false, + "direction_count": 1, + "animation_speed": 0.25, + "hr_version": { + "filename": "entity:pipe/hr-steam", + "priority": "extra-high", + "line_length": 10, + "width": 48, + "height": 30, + "frame_count": 60, + "axially_symmetrical": false, + "animation_speed": 0.25, + "direction_count": 1 + } + } + }, + "flow_length_in_ticks": 360, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/storage-tank", + "volume": 0.8 + }, + "apparent_volume": 1.5, + "max_sounds_per_type": 3 + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + -0.90625, + 0.8125 + ], + "green": [ + -0.984375, + 1 + ] + }, + "shadow": { + "red": [ + -0.59375, + 1.078125 + ], + "green": [ + -0.828125, + 1.109375 + ] + } + }, + { + "wire": { + "red": [ + 1.34375, + 0.46875 + ], + "green": [ + 1.40625, + 0.6875 + ] + }, + "shadow": { + "red": [ + 1.65625, + 0.703125 + ], + "green": [ + 1.5, + 0.71875 + ] + } + }, + { + "wire": { + "red": [ + -0.90625, + 0.8125 + ], + "green": [ + -0.984375, + 1 + ] + }, + "shadow": { + "red": [ + -0.59375, + 1.078125 + ], + "green": [ + -0.828125, + 1.109375 + ] + } + }, + { + "wire": { + "red": [ + 1.34375, + 0.46875 + ], + "green": [ + 1.40625, + 0.6875 + ] + }, + "shadow": { + "red": [ + 1.65625, + 0.703125 + ], + "green": [ + 1.5, + 0.71875 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 150, + "shift": [ + -1.046875, + 0.640625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 174, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 168, + "shift": [ + -0.890625, + 0.734375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 180, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 132, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 138, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 138, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -1.15625, + 0.875 + ], + "red_green_led_light_offset": [ + -1.15625, + 0.765625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 156, + "y": 150, + "shift": [ + 1.046875, + 0.609375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 186, + "y": 174, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 210, + "y": 168, + "shift": [ + 1.203125, + 0.703125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 180, + "y": 180, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 138, + "y": 132, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 138, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 138, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 1.203125, + 0.828125 + ], + "red_green_led_light_offset": [ + 1.203125, + 0.71875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 52, + "y": 150, + "shift": [ + -1.046875, + 0.640625 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 62, + "y": 174, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 70, + "y": 168, + "shift": [ + -0.890625, + 0.734375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 60, + "y": 180, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 46, + "y": 132, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 138, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 48, + "y": 138, + "shift": [ + -1.046875, + 0.609375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -1.15625, + 0.875 + ], + "red_green_led_light_offset": [ + -1.15625, + 0.765625 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 156, + "y": 150, + "shift": [ + 1.046875, + 0.609375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 186, + "y": 174, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 210, + "y": 168, + "shift": [ + 1.203125, + 0.703125 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 180, + "y": 180, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 138, + "y": 132, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 138, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 144, + "y": 138, + "shift": [ + 1.046875, + 0.578125 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 1.203125, + 0.828125 + ], + "red_green_led_light_offset": [ + 1.203125, + 0.71875 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2 + ] + }, + "pump": { + "type": "pump", + "name": "pump", + "icon": "entity:icons/pump", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "pump" + }, + "max_health": 180, + "fast_replaceable_group": "pipe", + "corpse": "small-remnants", + "collision_box": [ + [ + -0.29, + -0.79 + ], + [ + 0.29, + 0.79 + ] + ], + "selection_box": [ + [ + -0.5, + -1 + ], + [ + 0.5, + 1 + ] + ], + "resistances": [ + { + "type": "fire", + "percent": 80 + }, + { + "type": "impact", + "percent": 30 + } + ], + "fluid_box": { + "base_area": 1, + "height": 2, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "pipe_connections": [ + { + "position": [ + 0, + -1.5 + ], + "type": "output" + }, + { + "position": [ + 0, + 1.5 + ], + "type": "input" + } + ] + }, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input", + "emissions": 0.004 + }, + "energy_usage": "30kW", + "pumping_speed": 200, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "animations": { + "0": { + "filename": "entity:pump/pump-north", + "width": 53, + "height": 79, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + 0.25, + 0.234375 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-north", + "width": 103, + "height": 164, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + 0.25, + 0.109375 + ] + } + }, + "2": { + "filename": "entity:pump/pump-east", + "width": 66, + "height": 60, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + 0, + 0.125 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-east", + "width": 130, + "height": 109, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + -0.015625, + 0.0546875 + ] + } + }, + "4": { + "filename": "entity:pump/pump-south", + "width": 62, + "height": 87, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + 0.421875, + 0.015625 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-south", + "width": 114, + "height": 160, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + 0.390625, + -0.25 + ] + } + }, + "6": { + "filename": "entity:pump/pump-west", + "width": 69, + "height": 51, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + 0.015625, + -0.015625 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-west", + "width": 131, + "height": 111, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "animation_speed": 0.5, + "shift": [ + -0.0078125, + 0.0390625 + ] + } + } + }, + "fluid_wagon_connector_frame_count": 35, + "fluid_wagon_connector_graphics": { + "load_animations": { + "0": [ + { + "standup_base": { + "filename": "entity:connector/H-B-123456-load-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-load-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-1-load-standup-shadow", + "width": 64, + "height": 80, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5625, + -1.625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-1-load-standup-shadow", + "width": 126, + "height": 158, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5625, + -1.625 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-1-load-connect-shadow", + "width": 65, + "height": 90, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.828125, + -2.0625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-1-load-connect-shadow", + "width": 129, + "height": 181, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.8359375, + -2.0703125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-load-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-load-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-2-load-standup-shadow", + "width": 67, + "height": 90, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-2-load-standup-shadow", + "width": 133, + "height": 180, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.484375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-2-load-connect-shadow", + "width": 72, + "height": 90, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5, + -2.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-2-load-connect-shadow", + "width": 143, + "height": 178, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5078125, + -2.03125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-load-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-load-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-3-load-standup-shadow", + "width": 67, + "height": 90, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-3-load-standup-shadow", + "width": 133, + "height": 180, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.484375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-3-load-connect-shadow", + "width": 52, + "height": 91, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.625, + -2.078125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-3-load-connect-shadow", + "width": 103, + "height": 181, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.6328125, + -2.0703125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-load-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-load-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-load-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-load-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-5-load-standup-shadow", + "width": 67, + "height": 90, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-5-load-standup-shadow", + "width": 133, + "height": 181, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.4921875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-5-load-connect-shadow", + "width": 52, + "height": 89, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.625, + -2.109375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-5-load-connect-shadow", + "width": 103, + "height": 177, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.6328125, + -2.1015625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-load-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-load-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-6-load-standup-shadow", + "width": 67, + "height": 91, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-6-load-standup-shadow", + "width": 133, + "height": 182, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.5 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-6-load-connect-shadow", + "width": 72, + "height": 90, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5, + -2.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-6-load-connect-shadow", + "width": 143, + "height": 178, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5078125, + -2.03125 + ] + } + } + } + ], + "2": [ + { + "standup_base": { + "filename": "entity:connector/V-L-135-load-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-135-load-standup-base", + "width": 110, + "height": 127, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.5078125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-L-2-load-standup-base", + "width": 55, + "height": 73, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-2-load-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-L-135-load-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-135-load-standup-base", + "width": 110, + "height": 127, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.5078125 + ] + } + } + }, + null, + { + "standup_base": { + "filename": "entity:connector/V-L-135-load-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-135-load-standup-base", + "width": 110, + "height": 127, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.5078125 + ] + } + } + }, + null + ], + "4": [ + null, + null, + null, + null, + null, + null + ], + "6": [ + { + "standup_base": { + "filename": "entity:connector/V-R-135-load-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-load-standup-base", + "width": 110, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-1-load-standup-base-shadow", + "width": 79, + "height": 69, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.265625, + 0.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-1-load-standup-base-shadow", + "width": 157, + "height": 136, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.2734375, + 0.265625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-246-load-standup-base", + "width": 55, + "height": 74, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-load-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.671875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-2-load-standup-shadow", + "width": 78, + "height": 81, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.21875, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-2-load-standup-shadow", + "width": 155, + "height": 162, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.2109375, + -0.421875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-2-load-connect-shadow", + "width": 85, + "height": 80, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + -0.3125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-2-load-connect-shadow", + "width": 169, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.8671875, + -0.3125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-135-load-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-load-standup-base", + "width": 110, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-3-load-connect-shadow", + "width": 86, + "height": 88, + "line_length": 1, + "frame_count": 17, + "shift": [ + -0.875, + 0.40625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-3-load-connect-shadow", + "width": 171, + "height": 175, + "scale": 0.5, + "line_length": 1, + "frame_count": 17, + "shift": [ + -0.8671875, + 0.3984375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-246-load-standup-base", + "width": 55, + "height": 74, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-load-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.671875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-4-load-standup-shadow", + "width": 85, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.203125, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-4-load-standup-shadow", + "width": 168, + "height": 162, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.203125, + -0.421875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-4-load-connect-shadow", + "width": 85, + "height": 72, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + -0.4375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-4-load-connect-shadow", + "width": 168, + "height": 144, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + -0.4375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-135-load-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-load-standup-base", + "width": 110, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-5-load-standup-shadow", + "width": 85, + "height": 79, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.203125, + 0.109375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-5-load-standup-shadow", + "width": 168, + "height": 157, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.203125, + 0.1171875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-5-load-connect-shadow", + "width": 86, + "height": 80, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + 0.28125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-5-load-connect-shadow", + "width": 172, + "height": 158, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + 0.28125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-246-load-standup-base", + "width": 55, + "height": 74, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-load-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.671875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-6-load-standup-shadow", + "width": 85, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.203125, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-6-load-standup-shadow", + "width": 170, + "height": 162, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.21875, + -0.421875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-6-load-connect-shadow", + "width": 88, + "height": 66, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + -0.53125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-6-load-connect-shadow", + "width": 174, + "height": 131, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + -0.5234375 + ] + } + } + } + ] + }, + "unload_animations": { + "0": [ + { + "standup_base": { + "filename": "entity:connector/H-T-123456-unload-standup-base", + "width": 46, + "height": 54, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + 0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-base", + "width": 91, + "height": 107, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + 0.4921875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-T-123456-unload-standup-top", + "width": 22, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-top", + "width": 46, + "height": 109, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.0234375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-T-1-unload-standup-shadow", + "width": 39, + "height": 31, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.078125, + 0.578125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-1-unload-standup-shadow", + "width": 76, + "height": 61, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.078125, + 0.5859375 + ] + } + }, + "connector": { + "filename": "entity:connector/H-T-135-unload-connect", + "width": 45, + "height": 50, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.109375, + 0.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-135-unload-connect", + "width": 89, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.1171875, + 0.0234375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-T-1-unload-connect-shadow", + "width": 50, + "height": 27, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.3125, + 0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-1-unload-connect-shadow", + "width": 101, + "height": 53, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.3046875, + 0.5234375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-T-123456-unload-standup-base", + "width": 46, + "height": 54, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + 0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-base", + "width": 91, + "height": 107, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + 0.4921875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-T-123456-unload-standup-top", + "width": 22, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-top", + "width": 46, + "height": 109, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.0234375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-T-2-unload-standup-shadow", + "width": 43, + "height": 31, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.140625, + 0.578125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-2-unload-standup-shadow", + "width": 86, + "height": 60, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.140625, + 0.578125 + ] + } + }, + "connector": { + "filename": "entity:connector/H-T-246-unload-connect", + "width": 38, + "height": 49, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.03125, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-246-unload-connect", + "width": 76, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.046875, + 0.0234375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-T-2-unload-connect-shadow", + "width": 49, + "height": 34, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.171875, + 0.625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-2-unload-connect-shadow", + "width": 97, + "height": 66, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.1640625, + 0.625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-T-123456-unload-standup-base", + "width": 46, + "height": 54, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + 0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-base", + "width": 91, + "height": 107, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + 0.4921875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-T-123456-unload-standup-top", + "width": 22, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-top", + "width": 46, + "height": 109, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.0234375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-T-3-unload-standup-shadow", + "width": 39, + "height": 21, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.078125, + 0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-3-unload-standup-shadow", + "width": 78, + "height": 40, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.078125, + 0.421875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-T-135-unload-connect", + "width": 45, + "height": 50, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.109375, + 0.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-135-unload-connect", + "width": 89, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.1171875, + 0.0234375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-T-3-unload-connect-shadow", + "width": 51, + "height": 27, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.296875, + 0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-3-unload-connect-shadow", + "width": 102, + "height": 54, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.296875, + 0.53125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-T-123456-unload-standup-base", + "width": 46, + "height": 54, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + 0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-base", + "width": 91, + "height": 107, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + 0.4921875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-T-123456-unload-standup-top", + "width": 22, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-top", + "width": 46, + "height": 109, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.0234375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-T-4-unload-standup-shadow", + "width": 43, + "height": 31, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.140625, + 0.578125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-4-unload-standup-shadow", + "width": 86, + "height": 61, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.140625, + 0.5859375 + ] + } + }, + "connector": { + "filename": "entity:connector/H-T-246-unload-connect", + "width": 38, + "height": 49, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.03125, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-246-unload-connect", + "width": 76, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.046875, + 0.0234375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-T-4-unload-connect-shadow", + "width": 49, + "height": 41, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.171875, + 0.734375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-4-unload-connect-shadow", + "width": 97, + "height": 80, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.1640625, + 0.734375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-T-123456-unload-standup-base", + "width": 46, + "height": 54, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + 0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-base", + "width": 91, + "height": 107, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + 0.4921875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-T-123456-unload-standup-top", + "width": 22, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-top", + "width": 46, + "height": 109, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.0234375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-T-5-unload-standup-shadow", + "width": 39, + "height": 21, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.078125, + 0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-5-unload-standup-shadow", + "width": 78, + "height": 40, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.078125, + 0.421875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-T-135-unload-connect", + "width": 45, + "height": 50, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.109375, + 0.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-135-unload-connect", + "width": 89, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.1171875, + 0.0234375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-T-5-unload-connect-shadow", + "width": 50, + "height": 27, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.3125, + 0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-5-unload-connect-shadow", + "width": 99, + "height": 54, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.3203125, + 0.53125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-T-123456-unload-standup-base", + "width": 46, + "height": 54, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + 0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-base", + "width": 91, + "height": 107, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + 0.4921875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-T-123456-unload-standup-top", + "width": 22, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-123456-unload-standup-top", + "width": 46, + "height": 109, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + 0.0234375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-T-6-unload-standup-shadow", + "width": 67, + "height": 58, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + 0 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-6-unload-standup-shadow", + "width": 134, + "height": 115, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + 0.0078125 + ] + } + }, + "connector": { + "filename": "entity:connector/H-T-246-unload-connect", + "width": 38, + "height": 49, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.03125, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-246-unload-connect", + "width": 76, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.046875, + 0.0234375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-T-6-unload-connect-shadow", + "width": 41, + "height": 34, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.046875, + -0.375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-T-6-unload-connect-shadow", + "width": 81, + "height": 66, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.0390625, + -0.375 + ] + } + } + } + ], + "2": [ + { + "standup_base": { + "filename": "entity:connector/V-R-135-unload-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-unload-standup-base", + "width": 110, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-R-135-unload-standup-top", + "width": 60, + "height": 35, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.59375, + -0.890625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-unload-standup-top", + "width": 121, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.5859375, + -0.90625 + ] + } + }, + "connector": { + "filename": "entity:connector/V-R-1-unload-connect", + "width": 53, + "height": 56, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.359375, + -0.65625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-1-unload-connect", + "width": 107, + "height": 115, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.3515625, + -0.6484375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-1-unload-connect-shadow", + "width": 84, + "height": 77, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + 0.546875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-1-unload-connect-shadow", + "width": 168, + "height": 153, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + 0.5546875 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-246-unload-standup-base", + "width": 55, + "height": 74, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-unload-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.671875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-R-246-unload-standup-top", + "width": 60, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.59375, + -1.203125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-unload-standup-top", + "width": 121, + "height": 110, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.5859375, + -1.21875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-2-unload-standup-shadow", + "width": 82, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.25, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-2-unload-standup-shadow", + "width": 163, + "height": 162, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.2421875, + -0.421875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-R-2-unload-connect", + "width": 54, + "height": 47, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.34375, + -1.484375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-2-unload-connect", + "width": 107, + "height": 96, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.3359375, + -1.46875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-2-unload-connect-shadow", + "width": 85, + "height": 80, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + -0.3125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-2-unload-connect-shadow", + "width": 169, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.8671875, + -0.3125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-135-unload-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-unload-standup-base", + "width": 110, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-R-135-unload-standup-top", + "width": 60, + "height": 35, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.59375, + -0.890625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-unload-standup-top", + "width": 121, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.5859375, + -0.90625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-3-unload-standup-shadow", + "width": 80, + "height": 79, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.21875, + 0.109375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-3-unload-standup-shadow", + "width": 160, + "height": 157, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.21875, + 0.1171875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-R-3-unload-connect", + "width": 53, + "height": 50, + "line_length": 1, + "frame_count": 17, + "shift": [ + -1.359375, + -0.78125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-3-unload-connect", + "width": 106, + "height": 99, + "scale": 0.5, + "line_length": 1, + "frame_count": 17, + "shift": [ + -1.375, + -0.7734375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-3-unload-connect-shadow", + "width": 86, + "height": 88, + "line_length": 1, + "frame_count": 17, + "shift": [ + -0.875, + 0.40625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-3-unload-connect-shadow", + "width": 171, + "height": 175, + "scale": 0.5, + "line_length": 1, + "frame_count": 17, + "shift": [ + -0.8671875, + 0.3984375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-246-unload-standup-base", + "width": 55, + "height": 74, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-unload-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.671875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-R-246-unload-standup-top", + "width": 60, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.59375, + -1.203125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-unload-standup-top", + "width": 121, + "height": 110, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.5859375, + -1.21875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-4-unload-standup-shadow", + "width": 82, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.25, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-4-unload-standup-shadow", + "width": 163, + "height": 162, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.2421875, + -0.421875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-R-4-unload-connect", + "width": 53, + "height": 40, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.359375, + -1.5625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-4-unload-connect", + "width": 105, + "height": 80, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.3671875, + -1.5625 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-4-unload-connect-shadow", + "width": 85, + "height": 72, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + -0.4375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-4-unload-connect-shadow", + "width": 168, + "height": 144, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + -0.4375 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-135-unload-standup-base", + "width": 55, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-unload-standup-base", + "width": 110, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.421875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-R-135-unload-standup-top", + "width": 60, + "height": 35, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.59375, + -0.890625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-135-unload-standup-top", + "width": 121, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.5859375, + -0.90625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-5-unload-standup-shadow", + "width": 82, + "height": 79, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.25, + 0.109375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-5-unload-standup-shadow", + "width": 163, + "height": 157, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.2421875, + 0.1171875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-R-5-unload-connect", + "width": 54, + "height": 41, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.375, + -0.859375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-5-unload-connect", + "width": 106, + "height": 82, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.375, + -0.859375 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-5-unload-connect-shadow", + "width": 86, + "height": 80, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + 0.28125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-5-unload-connect-shadow", + "width": 172, + "height": 158, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.859375, + 0.28125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-R-246-unload-standup-base", + "width": 55, + "height": 74, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-unload-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.734375, + -0.671875 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-R-246-unload-standup-top", + "width": 60, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.59375, + -1.203125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-246-unload-standup-top", + "width": 121, + "height": 110, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + -0.5859375, + -1.21875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-R-6-unload-standup-shadow", + "width": 82, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.25, + -0.421875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-6-unload-standup-shadow", + "width": 165, + "height": 162, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.2578125, + -0.421875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-R-6-unload-connect", + "width": 54, + "height": 32, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.375, + -1.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-6-unload-connect", + "width": 106, + "height": 63, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -1.375, + -1.6796875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-R-6-unload-connect-shadow", + "width": 88, + "height": 67, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + -0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-R-6-unload-connect-shadow", + "width": 174, + "height": 133, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.84375, + -0.5078125 + ] + } + } + } + ], + "4": [ + { + "standup_base": { + "filename": "entity:connector/H-B-123456-unload-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-B-123456-unload-standup-top", + "width": 22, + "height": 73, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-top", + "width": 46, + "height": 146, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-1-unload-standup-shadow", + "width": 67, + "height": 86, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-1-unload-standup-shadow", + "width": 133, + "height": 172, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.546875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-B-135-unload-connect", + "width": 39, + "height": 50, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.140625, + -3.21875 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-135-unload-connect", + "width": 78, + "height": 100, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.140625, + -3.21875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-1-unload-connect-shadow", + "width": 41, + "height": 59, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.453125, + -2.546875 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-1-unload-connect-shadow", + "width": 81, + "height": 118, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.4609375, + -2.5625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-unload-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-B-123456-unload-standup-top", + "width": 22, + "height": 73, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-top", + "width": 46, + "height": 146, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-2-unload-standup-shadow", + "width": 63, + "height": 86, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.578125, + -1.5625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-2-unload-standup-shadow", + "width": 125, + "height": 173, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5859375, + -1.5546875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-B-246-unload-connect", + "width": 37, + "height": 47, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.109375, + -3.234375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-246-unload-connect", + "width": 74, + "height": 95, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.109375, + -3.2265625 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-2-unload-connect-shadow", + "width": 72, + "height": 90, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5, + -2.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-2-unload-connect-shadow", + "width": 143, + "height": 178, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5078125, + -2.03125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-unload-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-B-123456-unload-standup-top", + "width": 22, + "height": 73, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-top", + "width": 46, + "height": 146, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-3-unload-standup-shadow", + "width": 67, + "height": 86, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-3-unload-standup-shadow", + "width": 133, + "height": 172, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.546875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-B-135-unload-connect", + "width": 39, + "height": 50, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.140625, + -3.21875 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-135-unload-connect", + "width": 78, + "height": 100, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.140625, + -3.21875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-3-unload-connect-shadow", + "width": 66, + "height": 89, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.84375, + -2.109375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-3-unload-connect-shadow", + "width": 130, + "height": 177, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.84375, + -2.1015625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-unload-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-B-123456-unload-standup-top", + "width": 22, + "height": 73, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-top", + "width": 46, + "height": 146, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-4-unload-standup-shadow", + "width": 67, + "height": 86, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-4-unload-standup-shadow", + "width": 133, + "height": 172, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.546875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-B-246-unload-connect", + "width": 37, + "height": 47, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.109375, + -3.234375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-246-unload-connect", + "width": 74, + "height": 95, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.109375, + -3.2265625 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-4-unload-connect-shadow", + "width": 72, + "height": 90, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5, + -2.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-4-unload-connect-shadow", + "width": 143, + "height": 178, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.5078125, + -2.03125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-unload-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-B-123456-unload-standup-top", + "width": 22, + "height": 73, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-top", + "width": 46, + "height": 146, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-5-unload-standup-shadow", + "width": 67, + "height": 86, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.5625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-5-unload-standup-shadow", + "width": 133, + "height": 173, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.5234375, + -1.5546875 + ] + } + }, + "connector": { + "filename": "entity:connector/H-B-135-unload-connect", + "width": 39, + "height": 50, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.140625, + -3.21875 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-135-unload-connect", + "width": 78, + "height": 100, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.140625, + -3.21875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-5-unload-connect-shadow", + "width": 52, + "height": 89, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.625, + -2.109375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-5-unload-connect-shadow", + "width": 103, + "height": 177, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.6328125, + -2.1015625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/H-B-123456-unload-standup-base", + "width": 46, + "height": 80, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0, + -1.9375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-base", + "width": 91, + "height": 160, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + -0.0078125, + -1.9375 + ] + } + }, + "standup_top": { + "filename": "entity:connector/H-B-123456-unload-standup-top", + "width": 22, + "height": 73, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-123456-unload-standup-top", + "width": 46, + "height": 146, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0, + -2.265625 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/H-B-6-unload-standup-shadow", + "width": 67, + "height": 87, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.515625, + -1.578125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-6-unload-standup-shadow", + "width": 134, + "height": 174, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.53125, + -1.5625 + ] + } + }, + "connector": { + "filename": "entity:connector/H-B-246-unload-connect", + "width": 37, + "height": 47, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.109375, + -3.234375 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-246-unload-connect", + "width": 74, + "height": 95, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + -0.109375, + -3.2265625 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/H-B-6-unload-connect-shadow", + "width": 71, + "height": 90, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.515625, + -2.03125 + ], + "hr_version": { + "filename": "entity:connector/hr-H-B-6-unload-connect-shadow", + "width": 144, + "height": 178, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.515625, + -2.03125 + ] + } + } + } + ], + "6": [ + { + "standup_top": { + "filename": "entity:connector/V-L-135-unload-standup-top", + "width": 61, + "height": 35, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.578125, + -0.984375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-135-unload-standup-top", + "width": 123, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.5703125, + -0.984375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-L-1-unload-standup-shadow", + "width": 53, + "height": 63, + "line_length": 1, + "frame_count": 20, + "shift": [ + 1.046875, + 0.140625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-1-unload-standup-shadow", + "width": 106, + "height": 126, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 1.046875, + 0.140625 + ] + } + }, + "connector": { + "filename": "entity:connector/V-L-1-unload-connect", + "width": 54, + "height": 60, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4375, + -0.6875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-1-unload-connect", + "width": 106, + "height": 119, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4375, + -0.6953125 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-L-1-unload-connect-shadow", + "width": 46, + "height": 46, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.90625, + -0.0625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-1-unload-connect-shadow", + "width": 92, + "height": 90, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.90625, + -0.0625 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-L-246-unload-standup-base", + "width": 55, + "height": 73, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-246-unload-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-L-246-unload-standup-top", + "width": 60, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.59375, + -1.296875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-246-unload-standup-top", + "width": 121, + "height": 110, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.5859375, + -1.296875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-L-2-unload-standup-shadow", + "width": 48, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.96875, + -0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-2-unload-standup-shadow", + "width": 96, + "height": 163, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.96875, + -0.5234375 + ] + } + }, + "connector": { + "filename": "entity:connector/V-L-2-unload-connect", + "width": 54, + "height": 51, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.40625, + -1.546875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-2-unload-connect", + "width": 107, + "height": 102, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4140625, + -1.546875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-L-2-unload-connect-shadow", + "width": 44, + "height": 35, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.78125, + -1.265625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-2-unload-connect-shadow", + "width": 88, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.78125, + -1.265625 + ] + } + } + }, + { + "standup_top": { + "filename": "entity:connector/V-L-135-unload-standup-top", + "width": 61, + "height": 35, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.578125, + -0.984375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-135-unload-standup-top", + "width": 123, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.5703125, + -0.984375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-L-3-unload-standup-shadow", + "width": 48, + "height": 71, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.96875, + -0.046875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-3-unload-standup-shadow", + "width": 96, + "height": 142, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 0.96875, + -0.046875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-L-3-unload-connect", + "width": 53, + "height": 53, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.421875, + -0.796875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-3-unload-connect", + "width": 106, + "height": 105, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.40625, + -0.8046875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-L-3-unload-connect-shadow", + "width": 40, + "height": 39, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.78125, + -0.578125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-3-unload-connect-shadow", + "width": 80, + "height": 78, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.765625, + -0.578125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-L-246-unload-standup-base", + "width": 55, + "height": 73, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-246-unload-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-L-246-unload-standup-top", + "width": 60, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.59375, + -1.296875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-246-unload-standup-top", + "width": 121, + "height": 110, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.5859375, + -1.296875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-L-4-unload-standup-shadow", + "width": 48, + "height": 82, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.96875, + -0.5 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-4-unload-standup-shadow", + "width": 95, + "height": 163, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.9609375, + -0.4921875 + ] + } + }, + "connector": { + "filename": "entity:connector/V-L-4-unload-connect", + "width": 55, + "height": 43, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.421875, + -1.609375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-4-unload-connect", + "width": 109, + "height": 87, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4296875, + -1.6171875 + ] + } + } + }, + { + "standup_top": { + "filename": "entity:connector/V-L-135-unload-standup-top", + "width": 61, + "height": 35, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.578125, + -0.984375 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-135-unload-standup-top", + "width": 123, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.5703125, + -0.984375 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-L-5-unload-standup-shadow", + "width": 50, + "height": 79, + "line_length": 1, + "frame_count": 20, + "shift": [ + 1, + 0.015625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-5-unload-standup-shadow", + "width": 100, + "height": 158, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 1, + 0.015625 + ] + } + }, + "connector": { + "filename": "entity:connector/V-L-5-unload-connect", + "width": 54, + "height": 45, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4375, + -0.921875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-5-unload-connect", + "width": 108, + "height": 90, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4375, + -0.921875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-L-5-unload-connect-shadow", + "width": 44, + "height": 42, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.6875, + -0.53125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-5-unload-connect-shadow", + "width": 86, + "height": 84, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.6875, + -0.53125 + ] + } + } + }, + { + "standup_base": { + "filename": "entity:connector/V-L-246-unload-standup-base", + "width": 55, + "height": 73, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-246-unload-standup-base", + "width": 110, + "height": 148, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 0.734375, + -0.765625 + ] + } + }, + "standup_top": { + "filename": "entity:connector/V-L-246-unload-standup-top", + "width": 60, + "height": 55, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.59375, + -1.296875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-246-unload-standup-top", + "width": 121, + "height": 110, + "scale": 0.5, + "line_length": 1, + "frame_count": 19, + "shift": [ + 0.5859375, + -1.296875 + ] + } + }, + "standup_shadow": { + "filename": "entity:connector/V-L-6-unload-standup-shadow", + "width": 72, + "height": 81, + "line_length": 1, + "frame_count": 20, + "shift": [ + 1.34375, + -0.515625 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-6-unload-standup-shadow", + "width": 145, + "height": 161, + "scale": 0.5, + "line_length": 1, + "frame_count": 20, + "shift": [ + 1.3515625, + -0.5078125 + ] + } + }, + "connector": { + "filename": "entity:connector/V-L-6-unload-connect", + "width": 54, + "height": 35, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.40625, + -1.703125 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-6-unload-connect", + "width": 107, + "height": 70, + "scale": 0.5, + "line_length": 1, + "frame_count": 16, + "shift": [ + 1.4140625, + -1.71875 + ] + } + }, + "connector_shadow": { + "filename": "entity:connector/V-L-6-unload-connect-shadow", + "width": 43, + "height": 67, + "line_length": 1, + "frame_count": 18, + "shift": [ + 1.734375, + -0.546875 + ], + "hr_version": { + "filename": "entity:connector/hr-V-L-6-unload-connect-shadow", + "width": 86, + "height": 132, + "scale": 0.5, + "line_length": 1, + "frame_count": 18, + "shift": [ + 1.734375, + -0.546875 + ] + } + } + } + ] + } + }, + "fluid_animation": { + "0": { + "filename": "entity:pump/pump-north-liquid", + "apply_runtime_tint": true, + "width": 20, + "height": 13, + "line_length": 8, + "frame_count": 32, + "shift": [ + -0.015625, + -0.453125 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-north-liquid", + "apply_runtime_tint": true, + "width": 38, + "height": 22, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "shift": [ + -0.0078125, + -0.5234375 + ] + } + }, + "2": { + "filename": "entity:pump/pump-east-liquid", + "width": 18, + "height": 24, + "line_length": 8, + "frame_count": 32, + "shift": [ + 0.1875, + -0.25 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-east-liquid", + "width": 35, + "height": 46, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "shift": [ + 0.1953125, + -0.265625 + ] + } + }, + "4": { + "filename": "entity:pump/pump-south-liquid", + "width": 26, + "height": 55, + "line_length": 8, + "frame_count": 32, + "shift": [ + 0.109375, + 0.203125 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-south-liquid", + "width": 38, + "height": 45, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "shift": [ + 0.015625, + -0.2890625 + ] + } + }, + "6": { + "filename": "entity:pump/pump-west-liquid", + "width": 18, + "height": 24, + "line_length": 8, + "frame_count": 32, + "shift": [ + -0.1875, + -0.28125 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-west-liquid", + "width": 35, + "height": 47, + "scale": 0.5, + "line_length": 8, + "frame_count": 32, + "shift": [ + -0.203125, + -0.296875 + ] + } + } + }, + "glass_pictures": { + "0": { + "filename": "entity:pump/pump-north-glass", + "width": 32, + "height": 64, + "hr_version": { + "filename": "entity:pump/hr-pump-north-glass", + "width": 64, + "height": 128, + "scale": 0.5 + } + }, + "2": { + "filename": "entity:pump/pump-east-glass", + "width": 32, + "height": 32, + "shift": [ + 0, + -0.5 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-east-glass", + "width": 128, + "height": 192, + "scale": 0.5 + } + }, + "4": { + "filename": "entity:pump/pump-south-glass", + "width": 32, + "height": 64, + "hr_version": { + "filename": "entity:pump/hr-pump-south-glass", + "width": 64, + "height": 128, + "scale": 0.5 + } + }, + "6": { + "filename": "entity:pump/pump-west-glass", + "width": 32, + "height": 96, + "shift": [ + 0, + 0.46875 + ], + "hr_version": { + "filename": "entity:pump/hr-pump-west-glass", + "width": 192, + "height": 192, + "scale": 0.5, + "shift": [ + -0.5, + 0 + ] + } + } + }, + "circuit_wire_connection_points": [ + { + "wire": { + "red": [ + 0.71875, + 0.1875 + ], + "green": [ + 0.78125, + 0.421875 + ] + }, + "shadow": { + "red": [ + 0.4375, + -0.0625 + ], + "green": [ + 0.21875, + -0.015625 + ] + } + }, + { + "wire": { + "red": [ + -0.546875, + -0.0625 + ], + "green": [ + -0.625, + 0.109375 + ] + }, + "shadow": { + "red": [ + -0.140625, + 0.65625 + ], + "green": [ + -0.453125, + 0.640625 + ] + } + }, + { + "wire": { + "red": [ + -0.203125, + 0.15625 + ], + "green": [ + -0.140625, + 0.390625 + ] + }, + "shadow": { + "red": [ + 0.21875, + 0.75 + ], + "green": [ + 0, + 0.796875 + ] + } + }, + { + "wire": { + "red": [ + -0.5625, + -0.0625 + ], + "green": [ + -0.640625, + 0.109375 + ] + }, + "shadow": { + "red": [ + 0.25, + 0.453125 + ], + "green": [ + -0.0625, + 0.4375 + ] + } + } + ], + "circuit_connector_sprites": [ + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.421875, + 0.171875 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + -0.140625, + -0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.421875, + 0.140625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.578125, + 0.265625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.421875, + 0.140625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.421875, + 0.140625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.421875, + 0.140625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.421875, + 0.140625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.453125, + 0.4375 + ], + "red_green_led_light_offset": [ + 0.4375, + 0.328125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 150, + "shift": [ + -0.453125, + -0.234375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 174, + "shift": [ + -0.453125, + -0.265625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 168, + "shift": [ + -0.296875, + -0.140625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 180, + "shift": [ + -0.453125, + -0.265625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 132, + "shift": [ + -0.453125, + -0.265625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + -0.453125, + -0.265625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + -0.453125, + -0.265625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.65625, + -0.09375 + ], + "red_green_led_light_offset": [ + -0.640625, + -0.203125 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + -0.5, + 0.140625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + -0.359375, + 0.5 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + -0.5, + 0.109375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + -0.34375, + 0.234375 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + -0.5, + 0.109375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + -0.5, + 0.109375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + -0.5, + 0.109375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + -0.5, + 0.109375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.46875, + 0.40625 + ], + "red_green_led_light_offset": [ + -0.484375, + 0.296875 + ] + }, + { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 0, + "y": 150, + "shift": [ + -0.46875, + -0.234375 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 0, + "y": 174, + "shift": [ + -0.46875, + -0.265625 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 0, + "y": 168, + "shift": [ + -0.3125, + -0.140625 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 0, + "y": 180, + "shift": [ + -0.46875, + -0.265625 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 0, + "y": 132, + "shift": [ + -0.46875, + -0.265625 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + -0.46875, + -0.265625 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 0, + "y": 138, + "shift": [ + -0.46875, + -0.265625 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + -0.671875, + -0.09375 + ], + "red_green_led_light_offset": [ + -0.65625, + -0.203125 + ] + } + ], + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "accumulator": { + "type": "accumulator", + "name": "accumulator", + "icon": "entity:icons/accumulator", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "accumulator" + }, + "max_health": 150, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.9, + -0.9 + ], + [ + 0.9, + 0.9 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "drawing_box": [ + [ + -1, + -1.5 + ], + [ + 1, + 1 + ] + ], + "energy_source": { + "type": "electric", + "buffer_capacity": "5MJ", + "usage_priority": "terciary", + "input_flow_limit": "300kW", + "output_flow_limit": "300kW" + }, + "picture": { + "filename": "entity:accumulator/accumulator", + "priority": "extra-high", + "width": 124, + "height": 103, + "shift": [ + 0.6875, + -0.203125 + ] + }, + "charge_animation": { + "filename": "entity:accumulator/accumulator-charge-animation", + "width": 138, + "height": 135, + "line_length": 8, + "frame_count": 24, + "shift": [ + 0.46875, + -0.640625 + ], + "animation_speed": 0.5 + }, + "charge_cooldown": 30, + "charge_light": { + "intensity": 0.3, + "size": 7, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "discharge_animation": { + "filename": "entity:accumulator/accumulator-discharge-animation", + "width": 147, + "height": 128, + "line_length": 8, + "frame_count": 24, + "shift": [ + 0.390625, + -0.53125 + ], + "animation_speed": 0.5 + }, + "discharge_cooldown": 60, + "discharge_light": { + "intensity": 0.7, + "size": 7, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "working_sound": { + "sound": { + "filename": "entity:sound/accumulator-working", + "volume": 1 + }, + "idle_sound": { + "filename": "entity:sound/accumulator-idle", + "volume": 0.4 + }, + "max_sounds_per_type": 5 + }, + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.875, + 0.640625 + ], + "green": [ + 0.9375, + 0.875 + ] + }, + "shadow": { + "red": [ + 1.296875, + 1.125 + ], + "green": [ + 1.078125, + 1.171875 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 150, + "shift": [ + 0.578125, + 0.625 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 138, + "shift": [ + 0.71875, + 0.875 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 174, + "shift": [ + 0.578125, + 0.59375 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 168, + "shift": [ + 0.734375, + 0.71875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 180, + "shift": [ + 0.578125, + 0.59375 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 132, + "shift": [ + 0.578125, + 0.59375 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.578125, + 0.59375 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 138, + "shift": [ + 0.578125, + 0.59375 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.609375, + 0.890625 + ], + "red_green_led_light_offset": [ + 0.59375, + 0.78125 + ] + }, + "circuit_wire_max_distance": 9, + "default_output_signal": { + "type": "virtual", + "name": "signal-A" + }, + "size": { + "width": 2, + "height": 2 + } + }, + "beacon": { + "type": "beacon", + "name": "beacon", + "icon": "entity:icons/beacon", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 1, + "result": "beacon" + }, + "max_health": 200, + "corpse": "big-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -1.2, + -1.2 + ], + [ + 1.2, + 1.2 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "drawing_box": [ + [ + -1.5, + -2.2 + ], + [ + 1.5, + 1.3 + ] + ], + "allowed_effects": [ + "consumption", + "speed", + "pollution" + ], + "base_picture": { + "filename": "entity:beacon/beacon-base", + "width": 116, + "height": 93, + "shift": [ + 0.34375, + 0.046875 + ] + }, + "animation": { + "filename": "entity:beacon/beacon-antenna", + "width": 54, + "height": 50, + "line_length": 8, + "frame_count": 32, + "shift": [ + -0.03125, + -1.71875 + ], + "animation_speed": 0.5 + }, + "animation_shadow": { + "filename": "entity:beacon/beacon-antenna-shadow", + "width": 63, + "height": 49, + "line_length": 8, + "frame_count": 32, + "shift": [ + 3.140625, + 0.484375 + ], + "animation_speed": 0.5 + }, + "radius_visualisation_picture": { + "filename": "entity:beacon/beacon-radius-visualization", + "priority": "extra-high-no-scale", + "width": 10, + "height": 10 + }, + "supply_area_distance": 3, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input" + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "energy_usage": "480kW", + "distribution_effectivity": 0.5, + "module_specification": { + "module_slots": 2, + "module_info_icon_shift": [ + 0, + 0.5 + ], + "module_info_multi_row_initial_height_modifier": -0.3 + }, + "size": { + "width": 3, + "height": 3 + } + }, + "arithmetic-combinator": { + "type": "arithmetic-combinator", + "name": "arithmetic-combinator", + "icon": "entity:icons/arithmetic-combinator", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "arithmetic-combinator" + }, + "max_health": 150, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.65 + ], + [ + 0.35, + 0.65 + ] + ], + "selection_box": [ + [ + -0.5, + -1 + ], + [ + 0.5, + 1 + ] + ], + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input" + }, + "active_energy_usage": "1KW", + "working_sound": { + "sound": { + "filename": "entity:sound/combinator", + "volume": 0.35 + }, + "max_sounds_per_type": 2, + "match_speed_to_activity": true + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "activity_led_light": { + "intensity": 0.8, + "size": 1, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "activity_led_light_offsets": [ + [ + 0.234375, + -0.484375 + ], + [ + 0.5, + 0 + ], + [ + -0.265625, + 0.140625 + ], + [ + -0.453125, + -0.359375 + ] + ], + "screen_light": { + "intensity": 0.3, + "size": 0.6, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "screen_light_offsets": [ + [ + 0.015625, + -0.234375 + ], + [ + 0.015625, + -0.296875 + ], + [ + 0.015625, + -0.234375 + ], + [ + 0.015625, + -0.296875 + ] + ], + "input_connection_bounding_box": [ + [ + -0.5, + 0 + ], + [ + 0.5, + 1 + ] + ], + "output_connection_bounding_box": [ + [ + -0.5, + -1 + ], + [ + 0.5, + 0 + ] + ], + "circuit_wire_max_distance": 9, + "sprites": { + "0": { + "layers": [ + { + "filename": "entity:combinator/arithmetic-combinator", + "priority": "high", + "x": 0, + "width": 74, + "height": 64, + "frame_count": 1, + "shift": [ + 0.03125, + 0.25 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator", + "priority": "high", + "x": 0, + "width": 144, + "height": 124, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/arithmetic-combinator-shadow", + "priority": "high", + "x": 0, + "width": 76, + "height": 78, + "frame_count": 1, + "shift": [ + 0.4375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator-shadow", + "priority": "high", + "x": 0, + "width": 148, + "height": 156, + "frame_count": 1, + "shift": [ + 0.421875, + 0.765625 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:combinator/arithmetic-combinator", + "priority": "high", + "x": 74, + "width": 74, + "height": 64, + "frame_count": 1, + "shift": [ + 0.03125, + 0.25 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator", + "priority": "high", + "x": 144, + "width": 144, + "height": 124, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/arithmetic-combinator-shadow", + "priority": "high", + "x": 76, + "width": 76, + "height": 78, + "frame_count": 1, + "shift": [ + 0.4375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator-shadow", + "priority": "high", + "x": 148, + "width": 148, + "height": 156, + "frame_count": 1, + "shift": [ + 0.421875, + 0.765625 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:combinator/arithmetic-combinator", + "priority": "high", + "x": 148, + "width": 74, + "height": 64, + "frame_count": 1, + "shift": [ + 0.03125, + 0.25 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator", + "priority": "high", + "x": 288, + "width": 144, + "height": 124, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/arithmetic-combinator-shadow", + "priority": "high", + "x": 152, + "width": 76, + "height": 78, + "frame_count": 1, + "shift": [ + 0.4375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator-shadow", + "priority": "high", + "x": 296, + "width": 148, + "height": 156, + "frame_count": 1, + "shift": [ + 0.421875, + 0.765625 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:combinator/arithmetic-combinator", + "priority": "high", + "x": 222, + "width": 74, + "height": 64, + "frame_count": 1, + "shift": [ + 0.03125, + 0.25 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator", + "priority": "high", + "x": 432, + "width": 144, + "height": 124, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/arithmetic-combinator-shadow", + "priority": "high", + "x": 228, + "width": 76, + "height": 78, + "frame_count": 1, + "shift": [ + 0.4375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-arithmetic-combinator-shadow", + "priority": "high", + "x": 444, + "width": 148, + "height": 156, + "frame_count": 1, + "shift": [ + 0.421875, + 0.765625 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "activity_led_sprites": { + "0": { + "filename": "entity:activity-leds/arithmetic-combinator-LED-N", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + 0.25, + -0.375 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-arithmetic-combinator-LED-N", + "width": 16, + "height": 14, + "frame_count": 1, + "shift": [ + 0.265625, + -0.390625 + ] + } + }, + "2": { + "filename": "entity:activity-leds/arithmetic-combinator-LED-E", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + 0.53125, + -0.03125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-arithmetic-combinator-LED-E", + "width": 14, + "height": 14, + "frame_count": 1, + "shift": [ + 0.515625, + -0.03125 + ] + } + }, + "4": { + "filename": "entity:activity-leds/arithmetic-combinator-LED-S", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + -0.25, + 0.21875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-arithmetic-combinator-LED-S", + "width": 16, + "height": 16, + "frame_count": 1, + "shift": [ + -0.25, + 0.234375 + ] + } + }, + "6": { + "filename": "entity:activity-leds/arithmetic-combinator-LED-W", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + -0.5, + -0.375 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-arithmetic-combinator-LED-W", + "width": 14, + "height": 14, + "frame_count": 1, + "shift": [ + -0.5, + -0.390625 + ] + } + } + }, + "plus_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "minus_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "multiply_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "divide_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "modulo_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "power_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "left_shift_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "right_shift_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "and_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "or_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "xor_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 11, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.328125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 22, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.328125 + ] + } + } + }, + "input_connection_points": [ + { + "shadow": { + "red": [ + 0.15625, + 0.8125 + ], + "green": [ + 0.765625, + 0.8125 + ] + }, + "wire": { + "red": [ + -0.265625, + 0.4375 + ], + "green": [ + 0.3125, + 0.4375 + ] + } + }, + { + "shadow": { + "red": [ + -0.3125, + -0.109375 + ], + "green": [ + -0.3125, + 0.296875 + ] + }, + "wire": { + "red": [ + -0.796875, + -0.46875 + ], + "green": [ + -0.796875, + -0.046875 + ] + } + }, + { + "shadow": { + "red": [ + 0.765625, + -0.359375 + ], + "green": [ + 0.171875, + -0.296875 + ] + }, + "wire": { + "red": [ + 0.296875, + -0.671875 + ], + "green": [ + -0.28125, + -0.671875 + ] + } + }, + { + "shadow": { + "red": [ + 1.375, + 0.375 + ], + "green": [ + 1.375, + -0.046875 + ] + }, + "wire": { + "red": [ + 0.8125, + -0.03125 + ], + "green": [ + 0.8125, + -0.453125 + ] + } + } + ], + "output_connection_points": [ + { + "shadow": { + "red": [ + 0.125, + -0.390625 + ], + "green": [ + 0.734375, + -0.375 + ] + }, + "wire": { + "red": [ + -0.28125, + -0.6875 + ], + "green": [ + 0.3125, + -0.6875 + ] + } + }, + { + "shadow": { + "red": [ + 1.203125, + -0.046875 + ], + "green": [ + 1.1875, + 0.375 + ] + }, + "wire": { + "red": [ + 0.71875, + -0.40625 + ], + "green": [ + 0.71875, + 0.03125 + ] + } + }, + { + "shadow": { + "red": [ + 0.75, + 0.828125 + ], + "green": [ + 0.125, + 0.84375 + ] + }, + "wire": { + "red": [ + 0.3125, + 0.484375 + ], + "green": [ + -0.28125, + 0.484375 + ] + } + }, + { + "shadow": { + "red": [ + -0.21875, + 0.390625 + ], + "green": [ + -0.234375, + -0.046875 + ] + }, + "wire": { + "red": [ + -0.703125, + 0.03125 + ], + "green": [ + -0.703125, + -0.375 + ] + } + } + ], + "size": { + "width": 1, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "decider-combinator": { + "type": "decider-combinator", + "name": "decider-combinator", + "icon": "entity:icons/decider-combinator", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "decider-combinator" + }, + "max_health": 150, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.65 + ], + [ + 0.35, + 0.65 + ] + ], + "selection_box": [ + [ + -0.5, + -1 + ], + [ + 0.5, + 1 + ] + ], + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input" + }, + "active_energy_usage": "1KW", + "working_sound": { + "sound": { + "filename": "entity:sound/combinator", + "volume": 0.35 + }, + "max_sounds_per_type": 2, + "match_speed_to_activity": true + }, + "activity_led_light": { + "intensity": 0.8, + "size": 1, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "activity_led_light_offsets": [ + [ + 0.265625, + -0.53125 + ], + [ + 0.515625, + -0.078125 + ], + [ + -0.25, + 0.03125 + ], + [ + -0.46875, + -0.5 + ] + ], + "screen_light": { + "intensity": 0.3, + "size": 0.6, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "screen_light_offsets": [ + [ + 0.015625, + -0.265625 + ], + [ + 0.015625, + -0.359375 + ], + [ + 0.015625, + -0.265625 + ], + [ + 0.015625, + -0.359375 + ] + ], + "input_connection_bounding_box": [ + [ + -0.5, + 0 + ], + [ + 0.5, + 1 + ] + ], + "output_connection_bounding_box": [ + [ + -0.5, + -1 + ], + [ + 0.5, + 0 + ] + ], + "input_connection_points": [ + { + "shadow": { + "red": [ + 0.25, + 0.875 + ], + "green": [ + 0.828125, + 0.859375 + ] + }, + "wire": { + "red": [ + -0.265625, + 0.484375 + ], + "green": [ + 0.28125, + 0.46875 + ] + } + }, + { + "shadow": { + "red": [ + -0.296875, + -0.265625 + ], + "green": [ + -0.3125, + 0.25 + ] + }, + "wire": { + "red": [ + -0.765625, + -0.578125 + ], + "green": [ + -0.75, + -0.125 + ] + } + }, + { + "shadow": { + "red": [ + 0.84375, + -0.234375 + ], + "green": [ + 0.296875, + -0.234375 + ] + }, + "wire": { + "red": [ + 0.296875, + -0.609375 + ], + "green": [ + -0.25, + -0.609375 + ] + } + }, + { + "shadow": { + "red": [ + 1.328125, + 0.28125 + ], + "green": [ + 1.328125, + -0.203125 + ] + }, + "wire": { + "red": [ + 0.796875, + -0.125 + ], + "green": [ + 0.78125, + -0.59375 + ] + } + } + ], + "output_connection_points": [ + { + "shadow": { + "red": [ + 0.21875, + -0.296875 + ], + "green": [ + 0.828125, + -0.296875 + ] + }, + "wire": { + "red": [ + -0.28125, + -0.671875 + ], + "green": [ + 0.3125, + -0.65625 + ] + } + }, + { + "shadow": { + "red": [ + 1.21875, + -0.15625 + ], + "green": [ + 1.21875, + 0.265625 + ] + }, + "wire": { + "red": [ + 0.6875, + -0.53125 + ], + "green": [ + 0.6875, + -0.109375 + ] + } + }, + { + "shadow": { + "red": [ + 0.84375, + 0.953125 + ], + "green": [ + 0.234375, + 0.953125 + ] + }, + "wire": { + "red": [ + 0.296875, + 0.53125 + ], + "green": [ + -0.28125, + 0.546875 + ] + } + }, + { + "shadow": { + "red": [ + -0.171875, + 0.25 + ], + "green": [ + -0.171875, + -0.1875 + ] + }, + "wire": { + "red": [ + -0.671875, + -0.125 + ], + "green": [ + -0.671875, + -0.53125 + ] + } + } + ], + "circuit_wire_max_distance": 9, + "sprites": { + "0": { + "layers": [ + { + "filename": "entity:combinator/decider-combinator", + "priority": "high", + "x": 0, + "width": 78, + "height": 66, + "frame_count": 1, + "shift": [ + 0, + 0.21875 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator", + "priority": "high", + "x": 0, + "width": 156, + "height": 132, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/decider-combinator-shadow", + "priority": "high", + "x": 0, + "width": 78, + "height": 80, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator-shadow", + "priority": "high", + "x": 0, + "width": 156, + "height": 158, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:combinator/decider-combinator", + "priority": "high", + "x": 78, + "width": 78, + "height": 66, + "frame_count": 1, + "shift": [ + 0, + 0.21875 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator", + "priority": "high", + "x": 156, + "width": 156, + "height": 132, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/decider-combinator-shadow", + "priority": "high", + "x": 78, + "width": 78, + "height": 80, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator-shadow", + "priority": "high", + "x": 156, + "width": 156, + "height": 158, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:combinator/decider-combinator", + "priority": "high", + "x": 156, + "width": 78, + "height": 66, + "frame_count": 1, + "shift": [ + 0, + 0.21875 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator", + "priority": "high", + "x": 312, + "width": 156, + "height": 132, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/decider-combinator-shadow", + "priority": "high", + "x": 156, + "width": 78, + "height": 80, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator-shadow", + "priority": "high", + "x": 312, + "width": 156, + "height": 158, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:combinator/decider-combinator", + "priority": "high", + "x": 234, + "width": 78, + "height": 66, + "frame_count": 1, + "shift": [ + 0, + 0.21875 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator", + "priority": "high", + "x": 468, + "width": 156, + "height": 132, + "frame_count": 1, + "shift": [ + 0.015625, + 0.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/decider-combinator-shadow", + "priority": "high", + "x": 234, + "width": 78, + "height": 80, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-decider-combinator-shadow", + "priority": "high", + "x": 468, + "width": 156, + "height": 158, + "frame_count": 1, + "shift": [ + 0.375, + 0.75 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "activity_led_sprites": { + "0": { + "filename": "entity:activity-leds/decider-combinator-LED-N", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + 0.25, + -0.40625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-decider-combinator-LED-N", + "width": 16, + "height": 14, + "frame_count": 1, + "shift": [ + 0.265625, + -0.40625 + ] + } + }, + "2": { + "filename": "entity:activity-leds/decider-combinator-LED-E", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + 0.5, + -0.125 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-decider-combinator-LED-E", + "width": 16, + "height": 16, + "frame_count": 1, + "shift": [ + 0.5, + -0.125 + ] + } + }, + "4": { + "filename": "entity:activity-leds/decider-combinator-LED-S", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + -0.25, + 0.15625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-decider-combinator-LED-S", + "width": 16, + "height": 14, + "frame_count": 1, + "shift": [ + -0.25, + 0.140625 + ] + } + }, + "6": { + "filename": "entity:activity-leds/decider-combinator-LED-W", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + -0.46875, + -0.59375 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-decider-combinator-LED-W", + "width": 16, + "height": 16, + "frame_count": 1, + "shift": [ + -0.46875, + -0.578125 + ] + } + } + }, + "greater_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + } + }, + "less_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 15, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 30, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + } + }, + "equal_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 30, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 60, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + } + }, + "not_equal_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 45, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 90, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + } + }, + "less_or_equal_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 60, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 120, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + } + }, + "greater_or_equal_symbol_sprites": { + "0": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "2": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + }, + "4": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.140625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.140625 + ] + } + }, + "6": { + "filename": "entity:combinator/combinator-displays", + "x": 75, + "y": 22, + "width": 15, + "height": 11, + "shift": [ + 0, + -0.421875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:combinator/hr-combinator-displays", + "x": 150, + "y": 44, + "width": 30, + "height": 22, + "shift": [ + 0, + -0.421875 + ] + } + } + }, + "size": { + "width": 1, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "constant-combinator": { + "type": "constant-combinator", + "name": "constant-combinator", + "icon": "entity:icons/constant-combinator", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "constant-combinator" + }, + "max_health": 120, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.35, + -0.35 + ], + [ + 0.35, + 0.35 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "item_slot_count": 18, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "activity_led_light": { + "intensity": 0.8, + "size": 1, + "color": { + "r": 1, + "g": 1, + "b": 1 + } + }, + "activity_led_light_offsets": [ + [ + 0.296875, + -0.40625 + ], + [ + 0.25, + -0.03125 + ], + [ + -0.296875, + -0.078125 + ], + [ + -0.21875, + -0.46875 + ] + ], + "circuit_wire_max_distance": 9, + "sprites": { + "0": { + "layers": [ + { + "filename": "entity:combinator/constant-combinator", + "priority": "high", + "x": 0, + "width": 58, + "height": 52, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator", + "priority": "high", + "x": 0, + "width": 114, + "height": 102, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/constant-combinator-shadow", + "priority": "high", + "x": 0, + "width": 50, + "height": 34, + "frame_count": 1, + "shift": [ + 0.28125, + 0.1875 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator-shadow", + "priority": "high", + "x": 0, + "width": 98, + "height": 66, + "frame_count": 1, + "shift": [ + 0.265625, + 0.171875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:combinator/constant-combinator", + "priority": "high", + "x": 58, + "width": 58, + "height": 52, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator", + "priority": "high", + "x": 114, + "width": 114, + "height": 102, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/constant-combinator-shadow", + "priority": "high", + "x": 50, + "width": 50, + "height": 34, + "frame_count": 1, + "shift": [ + 0.28125, + 0.1875 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator-shadow", + "priority": "high", + "x": 98, + "width": 98, + "height": 66, + "frame_count": 1, + "shift": [ + 0.265625, + 0.171875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:combinator/constant-combinator", + "priority": "high", + "x": 116, + "width": 58, + "height": 52, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator", + "priority": "high", + "x": 228, + "width": 114, + "height": 102, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/constant-combinator-shadow", + "priority": "high", + "x": 100, + "width": 50, + "height": 34, + "frame_count": 1, + "shift": [ + 0.28125, + 0.1875 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator-shadow", + "priority": "high", + "x": 196, + "width": 98, + "height": 66, + "frame_count": 1, + "shift": [ + 0.265625, + 0.171875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:combinator/constant-combinator", + "priority": "high", + "x": 174, + "width": 58, + "height": 52, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator", + "priority": "high", + "x": 342, + "width": 114, + "height": 102, + "frame_count": 1, + "shift": [ + 0, + 0.15625 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:combinator/constant-combinator-shadow", + "priority": "high", + "x": 150, + "width": 50, + "height": 34, + "frame_count": 1, + "shift": [ + 0.28125, + 0.1875 + ], + "draw_as_shadow": true, + "scale": 1, + "hr_version": { + "filename": "entity:combinator/hr-constant-combinator-shadow", + "priority": "high", + "x": 294, + "width": 98, + "height": 66, + "frame_count": 1, + "shift": [ + 0.265625, + 0.171875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + } + }, + "activity_led_sprites": { + "0": { + "filename": "entity:activity-leds/constant-combinator-LED-N", + "width": 8, + "height": 6, + "frame_count": 1, + "shift": [ + 0.28125, + -0.375 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-constant-combinator-LED-N", + "width": 14, + "height": 12, + "frame_count": 1, + "shift": [ + 0.28125, + -0.359375 + ] + } + }, + "2": { + "filename": "entity:activity-leds/constant-combinator-LED-E", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + 0.25, + 0 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-constant-combinator-LED-E", + "width": 14, + "height": 14, + "frame_count": 1, + "shift": [ + 0.234375, + -0.015625 + ] + } + }, + "4": { + "filename": "entity:activity-leds/constant-combinator-LED-S", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + -0.28125, + 0.0625 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-constant-combinator-LED-S", + "width": 14, + "height": 16, + "frame_count": 1, + "shift": [ + -0.28125, + 0.078125 + ] + } + }, + "6": { + "filename": "entity:activity-leds/constant-combinator-LED-W", + "width": 8, + "height": 8, + "frame_count": 1, + "shift": [ + -0.21875, + -0.46875 + ], + "hr_version": { + "scale": 0.5, + "filename": "entity:activity-leds/hr-constant-combinator-LED-W", + "width": 14, + "height": 16, + "frame_count": 1, + "shift": [ + -0.21875, + -0.46875 + ] + } + } + }, + "circuit_wire_connection_points": [ + { + "shadow": { + "red": [ + 0.21875, + -0.1875 + ], + "green": [ + 0.71875, + -0.1875 + ] + }, + "wire": { + "red": [ + -0.265625, + -0.546875 + ], + "green": [ + 0.21875, + -0.546875 + ] + } + }, + { + "shadow": { + "red": [ + 1, + -0.15625 + ], + "green": [ + 1, + 0.25 + ] + }, + "wire": { + "red": [ + 0.5, + -0.515625 + ], + "green": [ + 0.5, + -0.109375 + ] + } + }, + { + "shadow": { + "red": [ + 0.78125, + 0.625 + ], + "green": [ + 0.28125, + 0.625 + ] + }, + "wire": { + "red": [ + 0.28125, + 0.234375 + ], + "green": [ + -0.203125, + 0.234375 + ] + } + }, + { + "shadow": { + "red": [ + 0.03125, + 0.34375 + ], + "green": [ + 0.03125, + -0.0625 + ] + }, + "wire": { + "red": [ + -0.46875, + -0.015625 + ], + "green": [ + -0.46875, + -0.421875 + ] + } + } + ], + "size": { + "width": 1, + "height": 1 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "power-switch": { + "type": "power-switch", + "name": "power-switch", + "icon": "entity:icons/power-switch", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 1, + "result": "power-switch" + }, + "max_health": 200, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "power_on_animation": { + "filename": "entity:power-switch/power-switch", + "animation_speed": 0.2, + "line_length": 2, + "width": 117, + "height": 74, + "frame_count": 6, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.453125, + 0.1875 + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "overlay_start_delay": 3, + "overlay_start": { + "filename": "entity:power-switch/power-switch-electricity-start", + "blend_mode": "additive", + "animation_speed": 0.2, + "line_length": 2, + "width": 38, + "height": 49, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.15625, + 0.046875 + ] + }, + "overlay_loop": { + "filename": "entity:power-switch/power-switch-electricity-loop", + "blend_mode": "additive", + "animation_speed": 0.25, + "line_length": 4, + "width": 53, + "height": 56, + "frame_count": 16, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.046875, + -0.0625 + ] + }, + "led_on": { + "filename": "entity:power-switch/power-switch-led", + "x": 6, + "width": 6, + "height": 9, + "frame_count": 1, + "shift": [ + 0.71875, + 0.140625 + ] + }, + "led_off": { + "filename": "entity:power-switch/power-switch-led", + "width": 6, + "height": 9, + "frame_count": 1, + "shift": [ + 0.71875, + 0.140625 + ] + }, + "circuit_wire_connection_point": { + "shadow": { + "red": [ + -0.328125, + 1.01563 + ], + "green": [ + -0.328125, + 1.01563 + ] + }, + "wire": { + "red": [ + -0.609375, + 0.828125 + ], + "green": [ + -0.609375, + 0.828125 + ] + } + }, + "left_wire_connection_point": { + "shadow": { + "copper": [ + 0.296875, + -0.171875 + ] + }, + "wire": { + "copper": [ + -0.765625, + -0.890625 + ] + } + }, + "right_wire_connection_point": { + "shadow": { + "copper": [ + 2.14063, + 0.015625 + ] + }, + "wire": { + "copper": [ + 0.859375, + -0.890625 + ] + } + }, + "wire_max_distance": 10, + "size": { + "width": 2, + "height": 2 + } + }, + "programmable-speaker": { + "type": "programmable-speaker", + "name": "programmable-speaker", + "icon": "entity:icons/programmable-speaker", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "programmable-speaker" + }, + "max_health": 150, + "corpse": "small-remnants", + "collision_box": [ + [ + -0.3, + -0.3 + ], + [ + 0.3, + 0.3 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "drawing_box": [ + [ + -0.5, + -2.5 + ], + [ + 0.5, + 0.3 + ] + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "energy_source": { + "type": "electric", + "usage_priority": "secondary-input" + }, + "energy_usage_per_tick": "2KW", + "sprite": { + "layers": [ + { + "filename": "entity:programmable-speaker/programmable-speaker", + "priority": "extra-high", + "width": 30, + "height": 89, + "shift": [ + -0.0625, + -1.234375 + ], + "hr_version": { + "filename": "entity:programmable-speaker/hr-programmable-speaker", + "priority": "extra-high", + "width": 59, + "height": 178, + "shift": [ + -0.0703125, + -1.234375 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:programmable-speaker/programmable-speaker-shadow", + "priority": "extra-high", + "width": 119, + "height": 25, + "shift": [ + 1.640625, + -0.078125 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:programmable-speaker/hr-programmable-speaker-shadow", + "priority": "extra-high", + "width": 237, + "height": 50, + "shift": [ + 1.6484375, + -0.09375 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "audible_distance_modifier": 2, + "maximum_polyphony": 10, + "instruments": [ + { + "name": "alarms", + "notes": [ + { + "name": "alarm-1", + "sound": { + "filename": "entity:programmable-speaker/alarm-1" + } + }, + { + "name": "alarm-2", + "sound": { + "filename": "entity:programmable-speaker/alarm-2" + } + }, + { + "name": "buzzer-1", + "sound": { + "filename": "entity:programmable-speaker/buzzer-1" + } + }, + { + "name": "buzzer-2", + "sound": { + "filename": "entity:programmable-speaker/buzzer-2" + } + }, + { + "name": "buzzer-3", + "sound": { + "filename": "entity:programmable-speaker/buzzer-3" + } + }, + { + "name": "ring", + "sound": { + "filename": "entity:programmable-speaker/ring", + "preload": false + } + }, + { + "name": "siren", + "sound": { + "filename": "entity:programmable-speaker/siren", + "preload": false + } + } + ] + }, + { + "name": "miscellaneous", + "notes": [ + { + "name": "achievement-unlocked", + "sound": { + "filename": "entity:sound/achievement-unlocked" + } + }, + { + "name": "alert-construction", + "sound": { + "filename": "entity:sound/alert-construction" + } + }, + { + "name": "alert-damage", + "sound": { + "filename": "entity:sound/alert-damage" + } + }, + { + "name": "armor-insert", + "sound": { + "filename": "entity:sound/armor-insert" + } + }, + { + "name": "armor-remove", + "sound": { + "filename": "entity:sound/armor-remove" + } + }, + { + "name": "cannot-build", + "sound": { + "filename": "entity:sound/cannot-build" + } + }, + { + "name": "console-message", + "sound": { + "filename": "entity:sound/console-message" + } + }, + { + "name": "crafting-finished", + "sound": { + "filename": "entity:sound/crafting-finished" + } + }, + { + "name": "game-lost", + "sound": { + "filename": "entity:sound/game-lost" + } + }, + { + "name": "game-won", + "sound": { + "filename": "entity:sound/game-won" + } + }, + { + "name": "gui-click", + "sound": { + "filename": "entity:sound/gui-click" + } + }, + { + "name": "gui-click-2", + "sound": { + "filename": "entity:sound/list-box-click" + } + }, + { + "name": "inventory-move", + "sound": { + "filename": "entity:sound/inventory-move" + } + }, + { + "name": "new-objective", + "sound": { + "filename": "entity:sound/new-objective" + } + }, + { + "name": "research-completed", + "sound": { + "filename": "entity:sound/research-completed" + } + }, + { + "name": "scenario-message", + "sound": { + "filename": "entity:sound/scenario-message" + } + } + ] + }, + { + "name": "drum-kit", + "notes": [ + { + "name": "kick-1", + "sound": { + "filename": "entity:programmable-speaker/kit-01" + } + }, + { + "name": "kick-2", + "sound": { + "filename": "entity:programmable-speaker/kit-02" + } + }, + { + "name": "snare-1", + "sound": { + "filename": "entity:programmable-speaker/kit-03" + } + }, + { + "name": "snare-2", + "sound": { + "filename": "entity:programmable-speaker/kit-04" + } + }, + { + "name": "snare-3", + "sound": { + "filename": "entity:programmable-speaker/kit-05" + } + }, + { + "name": "hat-1", + "sound": { + "filename": "entity:programmable-speaker/kit-06" + } + }, + { + "name": "hat-2", + "sound": { + "filename": "entity:programmable-speaker/kit-07" + } + }, + { + "name": "fx", + "sound": { + "filename": "entity:programmable-speaker/kit-08" + } + }, + { + "name": "high-q", + "sound": { + "filename": "entity:programmable-speaker/kit-09" + } + }, + { + "name": "perc-1", + "sound": { + "filename": "entity:programmable-speaker/kit-10" + } + }, + { + "name": "perc-2", + "sound": { + "filename": "entity:programmable-speaker/kit-11" + } + }, + { + "name": "crash", + "sound": { + "filename": "entity:programmable-speaker/kit-12" + } + }, + { + "name": "reverse-cymbal", + "sound": { + "filename": "entity:programmable-speaker/kit-13" + } + }, + { + "name": "clap", + "sound": { + "filename": "entity:programmable-speaker/kit-14" + } + }, + { + "name": "shaker", + "sound": { + "filename": "entity:programmable-speaker/kit-15" + } + }, + { + "name": "cowbell", + "sound": { + "filename": "entity:programmable-speaker/kit-16" + } + }, + { + "name": "triangle", + "sound": { + "filename": "entity:programmable-speaker/kit-17" + } + } + ] + }, + { + "name": "piano", + "notes": [ + { + "name": "F3", + "sound": { + "filename": "entity:programmable-speaker/piano1-01" + } + }, + { + "name": "F#3", + "sound": { + "filename": "entity:programmable-speaker/piano1-02" + } + }, + { + "name": "G3", + "sound": { + "filename": "entity:programmable-speaker/piano1-03" + } + }, + { + "name": "G#3", + "sound": { + "filename": "entity:programmable-speaker/piano1-04" + } + }, + { + "name": "A3", + "sound": { + "filename": "entity:programmable-speaker/piano1-05" + } + }, + { + "name": "A#3", + "sound": { + "filename": "entity:programmable-speaker/piano1-06" + } + }, + { + "name": "B3", + "sound": { + "filename": "entity:programmable-speaker/piano1-07" + } + }, + { + "name": "C4", + "sound": { + "filename": "entity:programmable-speaker/piano1-08" + } + }, + { + "name": "C#4", + "sound": { + "filename": "entity:programmable-speaker/piano1-09" + } + }, + { + "name": "D4", + "sound": { + "filename": "entity:programmable-speaker/piano1-10" + } + }, + { + "name": "D#4", + "sound": { + "filename": "entity:programmable-speaker/piano1-11" + } + }, + { + "name": "E4", + "sound": { + "filename": "entity:programmable-speaker/piano1-12" + } + }, + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/piano1-13" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/piano1-14" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/piano1-15" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/piano1-16" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/piano1-17" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/piano1-18" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/piano1-19" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/piano1-20" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/piano1-21" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/piano1-22" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/piano1-23" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/piano1-24" + } + }, + { + "name": "F5", + "sound": { + "filename": "entity:programmable-speaker/piano1-25" + } + }, + { + "name": "F#5", + "sound": { + "filename": "entity:programmable-speaker/piano1-26" + } + }, + { + "name": "G5", + "sound": { + "filename": "entity:programmable-speaker/piano1-27" + } + }, + { + "name": "G#5", + "sound": { + "filename": "entity:programmable-speaker/piano1-28" + } + }, + { + "name": "A5", + "sound": { + "filename": "entity:programmable-speaker/piano1-29" + } + }, + { + "name": "A#5", + "sound": { + "filename": "entity:programmable-speaker/piano1-30" + } + }, + { + "name": "B5", + "sound": { + "filename": "entity:programmable-speaker/piano1-31" + } + }, + { + "name": "C6", + "sound": { + "filename": "entity:programmable-speaker/piano1-32" + } + }, + { + "name": "C#6", + "sound": { + "filename": "entity:programmable-speaker/piano1-33" + } + }, + { + "name": "D6", + "sound": { + "filename": "entity:programmable-speaker/piano1-34" + } + }, + { + "name": "D#6", + "sound": { + "filename": "entity:programmable-speaker/piano1-35" + } + }, + { + "name": "E6", + "sound": { + "filename": "entity:programmable-speaker/piano1-36" + } + }, + { + "name": "F6", + "sound": { + "filename": "entity:programmable-speaker/piano1-37" + } + }, + { + "name": "F#6", + "sound": { + "filename": "entity:programmable-speaker/piano1-38" + } + }, + { + "name": "G6", + "sound": { + "filename": "entity:programmable-speaker/piano1-39" + } + }, + { + "name": "G#6", + "sound": { + "filename": "entity:programmable-speaker/piano1-40" + } + }, + { + "name": "A6", + "sound": { + "filename": "entity:programmable-speaker/piano1-41" + } + }, + { + "name": "A#6", + "sound": { + "filename": "entity:programmable-speaker/piano1-42" + } + }, + { + "name": "B6", + "sound": { + "filename": "entity:programmable-speaker/piano1-43" + } + }, + { + "name": "C7", + "sound": { + "filename": "entity:programmable-speaker/piano1-44" + } + }, + { + "name": "C#7", + "sound": { + "filename": "entity:programmable-speaker/piano1-45" + } + }, + { + "name": "D7", + "sound": { + "filename": "entity:programmable-speaker/piano1-46" + } + }, + { + "name": "D#7", + "sound": { + "filename": "entity:programmable-speaker/piano1-47" + } + }, + { + "name": "E7", + "sound": { + "filename": "entity:programmable-speaker/piano1-48" + } + } + ] + }, + { + "name": "bass", + "notes": [ + { + "name": "F2", + "sound": { + "filename": "entity:programmable-speaker/bass-01" + } + }, + { + "name": "F#2", + "sound": { + "filename": "entity:programmable-speaker/bass-02" + } + }, + { + "name": "G2", + "sound": { + "filename": "entity:programmable-speaker/bass-03" + } + }, + { + "name": "G#2", + "sound": { + "filename": "entity:programmable-speaker/bass-04" + } + }, + { + "name": "A2", + "sound": { + "filename": "entity:programmable-speaker/bass-05" + } + }, + { + "name": "A#2", + "sound": { + "filename": "entity:programmable-speaker/bass-06" + } + }, + { + "name": "B2", + "sound": { + "filename": "entity:programmable-speaker/bass-07" + } + }, + { + "name": "C3", + "sound": { + "filename": "entity:programmable-speaker/bass-08" + } + }, + { + "name": "C#3", + "sound": { + "filename": "entity:programmable-speaker/bass-09" + } + }, + { + "name": "D3", + "sound": { + "filename": "entity:programmable-speaker/bass-10" + } + }, + { + "name": "D#3", + "sound": { + "filename": "entity:programmable-speaker/bass-11" + } + }, + { + "name": "E3", + "sound": { + "filename": "entity:programmable-speaker/bass-12" + } + }, + { + "name": "F3", + "sound": { + "filename": "entity:programmable-speaker/bass-13" + } + }, + { + "name": "F#3", + "sound": { + "filename": "entity:programmable-speaker/bass-14" + } + }, + { + "name": "G3", + "sound": { + "filename": "entity:programmable-speaker/bass-15" + } + }, + { + "name": "G#3", + "sound": { + "filename": "entity:programmable-speaker/bass-16" + } + }, + { + "name": "A3", + "sound": { + "filename": "entity:programmable-speaker/bass-17" + } + }, + { + "name": "A#3", + "sound": { + "filename": "entity:programmable-speaker/bass-18" + } + }, + { + "name": "B3", + "sound": { + "filename": "entity:programmable-speaker/bass-19" + } + }, + { + "name": "C4", + "sound": { + "filename": "entity:programmable-speaker/bass-20" + } + }, + { + "name": "C#4", + "sound": { + "filename": "entity:programmable-speaker/bass-21" + } + }, + { + "name": "D4", + "sound": { + "filename": "entity:programmable-speaker/bass-22" + } + }, + { + "name": "D#4", + "sound": { + "filename": "entity:programmable-speaker/bass-23" + } + }, + { + "name": "E4", + "sound": { + "filename": "entity:programmable-speaker/bass-24" + } + }, + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/bass-25" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/bass-26" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/bass-27" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/bass-28" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/bass-29" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/bass-30" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/bass-31" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/bass-32" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/bass-33" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/bass-34" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/bass-35" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/bass-36" + } + } + ] + }, + { + "name": "lead", + "notes": [ + { + "name": "F2", + "sound": { + "filename": "entity:programmable-speaker/lead-01" + } + }, + { + "name": "F#2", + "sound": { + "filename": "entity:programmable-speaker/lead-02" + } + }, + { + "name": "G2", + "sound": { + "filename": "entity:programmable-speaker/lead-03" + } + }, + { + "name": "G#2", + "sound": { + "filename": "entity:programmable-speaker/lead-04" + } + }, + { + "name": "A2", + "sound": { + "filename": "entity:programmable-speaker/lead-05" + } + }, + { + "name": "A#2", + "sound": { + "filename": "entity:programmable-speaker/lead-06" + } + }, + { + "name": "B2", + "sound": { + "filename": "entity:programmable-speaker/lead-07" + } + }, + { + "name": "C3", + "sound": { + "filename": "entity:programmable-speaker/lead-08" + } + }, + { + "name": "C#3", + "sound": { + "filename": "entity:programmable-speaker/lead-09" + } + }, + { + "name": "D3", + "sound": { + "filename": "entity:programmable-speaker/lead-10" + } + }, + { + "name": "D#3", + "sound": { + "filename": "entity:programmable-speaker/lead-11" + } + }, + { + "name": "E3", + "sound": { + "filename": "entity:programmable-speaker/lead-12" + } + }, + { + "name": "F3", + "sound": { + "filename": "entity:programmable-speaker/lead-13" + } + }, + { + "name": "F#3", + "sound": { + "filename": "entity:programmable-speaker/lead-14" + } + }, + { + "name": "G3", + "sound": { + "filename": "entity:programmable-speaker/lead-15" + } + }, + { + "name": "G#3", + "sound": { + "filename": "entity:programmable-speaker/lead-16" + } + }, + { + "name": "A3", + "sound": { + "filename": "entity:programmable-speaker/lead-17" + } + }, + { + "name": "A#3", + "sound": { + "filename": "entity:programmable-speaker/lead-18" + } + }, + { + "name": "B3", + "sound": { + "filename": "entity:programmable-speaker/lead-19" + } + }, + { + "name": "C4", + "sound": { + "filename": "entity:programmable-speaker/lead-20" + } + }, + { + "name": "C#4", + "sound": { + "filename": "entity:programmable-speaker/lead-21" + } + }, + { + "name": "D4", + "sound": { + "filename": "entity:programmable-speaker/lead-22" + } + }, + { + "name": "D#4", + "sound": { + "filename": "entity:programmable-speaker/lead-23" + } + }, + { + "name": "E4", + "sound": { + "filename": "entity:programmable-speaker/lead-24" + } + }, + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/lead-25" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/lead-26" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/lead-27" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/lead-28" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/lead-29" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/lead-30" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/lead-31" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/lead-32" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/lead-33" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/lead-34" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/lead-35" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/lead-36" + } + } + ] + }, + { + "name": "saw", + "notes": [ + { + "name": "F2", + "sound": { + "filename": "entity:programmable-speaker/saw-01" + } + }, + { + "name": "F#2", + "sound": { + "filename": "entity:programmable-speaker/saw-02" + } + }, + { + "name": "G2", + "sound": { + "filename": "entity:programmable-speaker/saw-03" + } + }, + { + "name": "G#2", + "sound": { + "filename": "entity:programmable-speaker/saw-04" + } + }, + { + "name": "A2", + "sound": { + "filename": "entity:programmable-speaker/saw-05" + } + }, + { + "name": "A#2", + "sound": { + "filename": "entity:programmable-speaker/saw-06" + } + }, + { + "name": "B2", + "sound": { + "filename": "entity:programmable-speaker/saw-07" + } + }, + { + "name": "C3", + "sound": { + "filename": "entity:programmable-speaker/saw-08" + } + }, + { + "name": "C#3", + "sound": { + "filename": "entity:programmable-speaker/saw-09" + } + }, + { + "name": "D3", + "sound": { + "filename": "entity:programmable-speaker/saw-10" + } + }, + { + "name": "D#3", + "sound": { + "filename": "entity:programmable-speaker/saw-11" + } + }, + { + "name": "E3", + "sound": { + "filename": "entity:programmable-speaker/saw-12" + } + }, + { + "name": "F3", + "sound": { + "filename": "entity:programmable-speaker/saw-13" + } + }, + { + "name": "F#3", + "sound": { + "filename": "entity:programmable-speaker/saw-14" + } + }, + { + "name": "G3", + "sound": { + "filename": "entity:programmable-speaker/saw-15" + } + }, + { + "name": "G#3", + "sound": { + "filename": "entity:programmable-speaker/saw-16" + } + }, + { + "name": "A3", + "sound": { + "filename": "entity:programmable-speaker/saw-17" + } + }, + { + "name": "A#3", + "sound": { + "filename": "entity:programmable-speaker/saw-18" + } + }, + { + "name": "B3", + "sound": { + "filename": "entity:programmable-speaker/saw-19" + } + }, + { + "name": "C4", + "sound": { + "filename": "entity:programmable-speaker/saw-20" + } + }, + { + "name": "C#4", + "sound": { + "filename": "entity:programmable-speaker/saw-21" + } + }, + { + "name": "D4", + "sound": { + "filename": "entity:programmable-speaker/saw-22" + } + }, + { + "name": "D#4", + "sound": { + "filename": "entity:programmable-speaker/saw-23" + } + }, + { + "name": "E4", + "sound": { + "filename": "entity:programmable-speaker/saw-24" + } + }, + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/saw-25" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/saw-26" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/saw-27" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/saw-28" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/saw-29" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/saw-30" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/saw-31" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/saw-32" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/saw-33" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/saw-34" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/saw-35" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/saw-36" + } + } + ] + }, + { + "name": "square", + "notes": [ + { + "name": "F2", + "sound": { + "filename": "entity:programmable-speaker/square-01" + } + }, + { + "name": "F#2", + "sound": { + "filename": "entity:programmable-speaker/square-02" + } + }, + { + "name": "G2", + "sound": { + "filename": "entity:programmable-speaker/square-03" + } + }, + { + "name": "G#2", + "sound": { + "filename": "entity:programmable-speaker/square-04" + } + }, + { + "name": "A2", + "sound": { + "filename": "entity:programmable-speaker/square-05" + } + }, + { + "name": "A#2", + "sound": { + "filename": "entity:programmable-speaker/square-06" + } + }, + { + "name": "B2", + "sound": { + "filename": "entity:programmable-speaker/square-07" + } + }, + { + "name": "C3", + "sound": { + "filename": "entity:programmable-speaker/square-08" + } + }, + { + "name": "C#3", + "sound": { + "filename": "entity:programmable-speaker/square-09" + } + }, + { + "name": "D3", + "sound": { + "filename": "entity:programmable-speaker/square-10" + } + }, + { + "name": "D#3", + "sound": { + "filename": "entity:programmable-speaker/square-11" + } + }, + { + "name": "E3", + "sound": { + "filename": "entity:programmable-speaker/square-12" + } + }, + { + "name": "F3", + "sound": { + "filename": "entity:programmable-speaker/square-13" + } + }, + { + "name": "F#3", + "sound": { + "filename": "entity:programmable-speaker/square-14" + } + }, + { + "name": "G3", + "sound": { + "filename": "entity:programmable-speaker/square-15" + } + }, + { + "name": "G#3", + "sound": { + "filename": "entity:programmable-speaker/square-16" + } + }, + { + "name": "A3", + "sound": { + "filename": "entity:programmable-speaker/square-17" + } + }, + { + "name": "A#3", + "sound": { + "filename": "entity:programmable-speaker/square-18" + } + }, + { + "name": "B3", + "sound": { + "filename": "entity:programmable-speaker/square-19" + } + }, + { + "name": "C4", + "sound": { + "filename": "entity:programmable-speaker/square-20" + } + }, + { + "name": "C#4", + "sound": { + "filename": "entity:programmable-speaker/square-21" + } + }, + { + "name": "D4", + "sound": { + "filename": "entity:programmable-speaker/square-22" + } + }, + { + "name": "D#4", + "sound": { + "filename": "entity:programmable-speaker/square-23" + } + }, + { + "name": "E4", + "sound": { + "filename": "entity:programmable-speaker/square-24" + } + }, + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/square-25" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/square-26" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/square-27" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/square-28" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/square-29" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/square-30" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/square-31" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/square-32" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/square-33" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/square-34" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/square-35" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/square-36" + } + } + ] + }, + { + "name": "celesta", + "notes": [ + { + "name": "F5", + "sound": { + "filename": "entity:programmable-speaker/celesta-01" + } + }, + { + "name": "F#5", + "sound": { + "filename": "entity:programmable-speaker/celesta-02" + } + }, + { + "name": "G5", + "sound": { + "filename": "entity:programmable-speaker/celesta-03" + } + }, + { + "name": "G#5", + "sound": { + "filename": "entity:programmable-speaker/celesta-04" + } + }, + { + "name": "A5", + "sound": { + "filename": "entity:programmable-speaker/celesta-05" + } + }, + { + "name": "A#5", + "sound": { + "filename": "entity:programmable-speaker/celesta-06" + } + }, + { + "name": "B5", + "sound": { + "filename": "entity:programmable-speaker/celesta-07" + } + }, + { + "name": "C6", + "sound": { + "filename": "entity:programmable-speaker/celesta-08" + } + }, + { + "name": "C#6", + "sound": { + "filename": "entity:programmable-speaker/celesta-09" + } + }, + { + "name": "D6", + "sound": { + "filename": "entity:programmable-speaker/celesta-10" + } + }, + { + "name": "D#6", + "sound": { + "filename": "entity:programmable-speaker/celesta-11" + } + }, + { + "name": "E6", + "sound": { + "filename": "entity:programmable-speaker/celesta-12" + } + }, + { + "name": "F6", + "sound": { + "filename": "entity:programmable-speaker/celesta-13" + } + }, + { + "name": "F#6", + "sound": { + "filename": "entity:programmable-speaker/celesta-14" + } + }, + { + "name": "G6", + "sound": { + "filename": "entity:programmable-speaker/celesta-15" + } + }, + { + "name": "G#6", + "sound": { + "filename": "entity:programmable-speaker/celesta-16" + } + }, + { + "name": "A6", + "sound": { + "filename": "entity:programmable-speaker/celesta-17" + } + }, + { + "name": "A#6", + "sound": { + "filename": "entity:programmable-speaker/celesta-18" + } + }, + { + "name": "B6", + "sound": { + "filename": "entity:programmable-speaker/celesta-19" + } + }, + { + "name": "C7", + "sound": { + "filename": "entity:programmable-speaker/celesta-20" + } + }, + { + "name": "C#7", + "sound": { + "filename": "entity:programmable-speaker/celesta-21" + } + }, + { + "name": "D7", + "sound": { + "filename": "entity:programmable-speaker/celesta-22" + } + }, + { + "name": "D#7", + "sound": { + "filename": "entity:programmable-speaker/celesta-23" + } + }, + { + "name": "E7", + "sound": { + "filename": "entity:programmable-speaker/celesta-24" + } + }, + { + "name": "F7", + "sound": { + "filename": "entity:programmable-speaker/celesta-25" + } + }, + { + "name": "F#7", + "sound": { + "filename": "entity:programmable-speaker/celesta-26" + } + }, + { + "name": "G7", + "sound": { + "filename": "entity:programmable-speaker/celesta-27" + } + }, + { + "name": "G#7", + "sound": { + "filename": "entity:programmable-speaker/celesta-28" + } + }, + { + "name": "A7", + "sound": { + "filename": "entity:programmable-speaker/celesta-29" + } + }, + { + "name": "A#7", + "sound": { + "filename": "entity:programmable-speaker/celesta-30" + } + }, + { + "name": "B7", + "sound": { + "filename": "entity:programmable-speaker/celesta-31" + } + }, + { + "name": "C8", + "sound": { + "filename": "entity:programmable-speaker/celesta-32" + } + }, + { + "name": "C#8", + "sound": { + "filename": "entity:programmable-speaker/celesta-33" + } + }, + { + "name": "D8", + "sound": { + "filename": "entity:programmable-speaker/celesta-34" + } + }, + { + "name": "D#8", + "sound": { + "filename": "entity:programmable-speaker/celesta-35" + } + }, + { + "name": "E8", + "sound": { + "filename": "entity:programmable-speaker/celesta-36" + } + } + ] + }, + { + "name": "vibraphone", + "notes": [ + { + "name": "F5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-01" + } + }, + { + "name": "F#5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-02" + } + }, + { + "name": "G5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-03" + } + }, + { + "name": "G#5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-04" + } + }, + { + "name": "A5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-05" + } + }, + { + "name": "A#5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-06" + } + }, + { + "name": "B5", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-07" + } + }, + { + "name": "C6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-08" + } + }, + { + "name": "C#6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-09" + } + }, + { + "name": "D6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-10" + } + }, + { + "name": "D#6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-11" + } + }, + { + "name": "E6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-12" + } + }, + { + "name": "F6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-13" + } + }, + { + "name": "F#6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-14" + } + }, + { + "name": "G6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-15" + } + }, + { + "name": "G#6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-16" + } + }, + { + "name": "A6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-17" + } + }, + { + "name": "A#6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-18" + } + }, + { + "name": "B6", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-19" + } + }, + { + "name": "C7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-20" + } + }, + { + "name": "C#7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-21" + } + }, + { + "name": "D7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-22" + } + }, + { + "name": "D#7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-23" + } + }, + { + "name": "E7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-24" + } + }, + { + "name": "F7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-25" + } + }, + { + "name": "F#7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-26" + } + }, + { + "name": "G7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-27" + } + }, + { + "name": "G#7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-28" + } + }, + { + "name": "A7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-29" + } + }, + { + "name": "A#7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-30" + } + }, + { + "name": "B7", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-31" + } + }, + { + "name": "C8", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-32" + } + }, + { + "name": "C#8", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-33" + } + }, + { + "name": "D8", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-34" + } + }, + { + "name": "D#8", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-35" + } + }, + { + "name": "E8", + "sound": { + "filename": "entity:programmable-speaker/vibraphone-36" + } + } + ] + }, + { + "name": "plucked", + "notes": [ + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/plucked-01" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/plucked-02" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/plucked-03" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/plucked-04" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/plucked-05" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/plucked-06" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/plucked-07" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/plucked-08" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/plucked-09" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/plucked-10" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/plucked-11" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/plucked-12" + } + }, + { + "name": "F5", + "sound": { + "filename": "entity:programmable-speaker/plucked-13" + } + }, + { + "name": "F#5", + "sound": { + "filename": "entity:programmable-speaker/plucked-14" + } + }, + { + "name": "G5", + "sound": { + "filename": "entity:programmable-speaker/plucked-15" + } + }, + { + "name": "G#5", + "sound": { + "filename": "entity:programmable-speaker/plucked-16" + } + }, + { + "name": "A5", + "sound": { + "filename": "entity:programmable-speaker/plucked-17" + } + }, + { + "name": "A#5", + "sound": { + "filename": "entity:programmable-speaker/plucked-18" + } + }, + { + "name": "B5", + "sound": { + "filename": "entity:programmable-speaker/plucked-19" + } + }, + { + "name": "C6", + "sound": { + "filename": "entity:programmable-speaker/plucked-20" + } + }, + { + "name": "C#6", + "sound": { + "filename": "entity:programmable-speaker/plucked-21" + } + }, + { + "name": "D6", + "sound": { + "filename": "entity:programmable-speaker/plucked-22" + } + }, + { + "name": "D#6", + "sound": { + "filename": "entity:programmable-speaker/plucked-23" + } + }, + { + "name": "E6", + "sound": { + "filename": "entity:programmable-speaker/plucked-24" + } + }, + { + "name": "F6", + "sound": { + "filename": "entity:programmable-speaker/plucked-25" + } + }, + { + "name": "F#6", + "sound": { + "filename": "entity:programmable-speaker/plucked-26" + } + }, + { + "name": "G6", + "sound": { + "filename": "entity:programmable-speaker/plucked-27" + } + }, + { + "name": "G#6", + "sound": { + "filename": "entity:programmable-speaker/plucked-28" + } + }, + { + "name": "A6", + "sound": { + "filename": "entity:programmable-speaker/plucked-29" + } + }, + { + "name": "A#6", + "sound": { + "filename": "entity:programmable-speaker/plucked-30" + } + }, + { + "name": "B6", + "sound": { + "filename": "entity:programmable-speaker/plucked-31" + } + }, + { + "name": "C7", + "sound": { + "filename": "entity:programmable-speaker/plucked-32" + } + }, + { + "name": "C#7", + "sound": { + "filename": "entity:programmable-speaker/plucked-33" + } + }, + { + "name": "D7", + "sound": { + "filename": "entity:programmable-speaker/plucked-34" + } + }, + { + "name": "D#7", + "sound": { + "filename": "entity:programmable-speaker/plucked-35" + } + }, + { + "name": "E7", + "sound": { + "filename": "entity:programmable-speaker/plucked-36" + } + } + ] + }, + { + "name": "steel-drum", + "notes": [ + { + "name": "F3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-01" + } + }, + { + "name": "F#3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-02" + } + }, + { + "name": "G3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-03" + } + }, + { + "name": "G#3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-04" + } + }, + { + "name": "A3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-05" + } + }, + { + "name": "A#3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-06" + } + }, + { + "name": "B3", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-07" + } + }, + { + "name": "C4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-08" + } + }, + { + "name": "C#4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-09" + } + }, + { + "name": "D4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-10" + } + }, + { + "name": "D#4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-11" + } + }, + { + "name": "E4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-12" + } + }, + { + "name": "F4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-13" + } + }, + { + "name": "F#4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-14" + } + }, + { + "name": "G4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-15" + } + }, + { + "name": "G#4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-16" + } + }, + { + "name": "A4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-17" + } + }, + { + "name": "A#4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-18" + } + }, + { + "name": "B4", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-19" + } + }, + { + "name": "C5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-20" + } + }, + { + "name": "C#5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-21" + } + }, + { + "name": "D5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-22" + } + }, + { + "name": "D#5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-23" + } + }, + { + "name": "E5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-24" + } + }, + { + "name": "F5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-25" + } + }, + { + "name": "F#5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-26" + } + }, + { + "name": "G5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-27" + } + }, + { + "name": "G#5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-28" + } + }, + { + "name": "A5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-29" + } + }, + { + "name": "A#5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-30" + } + }, + { + "name": "B5", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-31" + } + }, + { + "name": "C6", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-32" + } + }, + { + "name": "C#6", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-33" + } + }, + { + "name": "D6", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-34" + } + }, + { + "name": "D#6", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-35" + } + }, + { + "name": "E6", + "sound": { + "filename": "entity:programmable-speaker/steel-drum-36" + } + } + ] + } + ], + "circuit_wire_connection_point": { + "wire": { + "red": [ + 0.484375, + 0.21875 + ], + "green": [ + 0.546875, + 0.453125 + ] + }, + "shadow": { + "red": [ + 0.96875, + 0.53125 + ], + "green": [ + 0.8125, + 0.625 + ] + } + }, + "circuit_connector_sprites": { + "connector_main": { + "filename": "entity:circuit-connector/hr-ccm-universal-04a-base-sequence", + "priority": "low", + "width": 52, + "height": 50, + "scale": 0.5, + "x": 104, + "y": 100, + "shift": [ + 0.1875, + 0.203125 + ] + }, + "connector_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04b-base-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 62, + "height": 46, + "scale": 0.5, + "x": 124, + "y": 92, + "shift": [ + 0.40625, + 0.3125 + ] + }, + "wire_pins": { + "filename": "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence", + "priority": "low", + "width": 62, + "height": 58, + "scale": 0.5, + "x": 124, + "y": 116, + "shift": [ + 0.1875, + 0.171875 + ] + }, + "wire_pins_shadow": { + "filename": "entity:circuit-connector/hr-ccm-universal-04d-wire-shadow-sequence", + "priority": "low", + "draw_as_shadow": true, + "width": 70, + "height": 56, + "scale": 0.5, + "x": 140, + "y": 112, + "shift": [ + 0.34375, + 0.296875 + ] + }, + "led_blue": { + "filename": "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence", + "priority": "low", + "width": 60, + "height": 60, + "scale": 0.5, + "x": 120, + "y": 120, + "shift": [ + 0.1875, + 0.171875 + ] + }, + "led_blue_off": { + "filename": "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence", + "priority": "low", + "width": 46, + "height": 44, + "scale": 0.5, + "x": 92, + "y": 88, + "shift": [ + 0.1875, + 0.171875 + ] + }, + "led_green": { + "filename": "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 92, + "shift": [ + 0.1875, + 0.171875 + ] + }, + "led_red": { + "filename": "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence", + "priority": "low", + "width": 48, + "height": 46, + "scale": 0.5, + "x": 96, + "y": 92, + "shift": [ + 0.1875, + 0.171875 + ] + }, + "led_light": { + "intensity": 0.8, + "size": 0.9 + }, + "blue_led_light_offset": [ + 0.21875, + 0.453125 + ], + "red_green_led_light_offset": [ + 0.203125, + 0.28125 + ] + }, + "circuit_wire_max_distance": 9, + "size": { + "width": 1, + "height": 1 + } + }, + "nuclear-reactor": { + "type": "reactor", + "name": "nuclear-reactor", + "icon": "entity:icons/nuclear-reactor", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "mining_time": 1.5, + "result": "nuclear-reactor" + }, + "max_health": 500, + "corpse": "big-remnants", + "consumption": "40MW", + "neighbour_bonus": 1, + "burner": { + "fuel_category": "nuclear", + "effectivity": 1, + "fuel_inventory_size": 1, + "burnt_inventory_size": 1 + }, + "collision_box": [ + [ + -2.2, + -2.2 + ], + [ + 2.2, + 2.2 + ] + ], + "selection_box": [ + [ + -2.5, + -2.5 + ], + [ + 2.5, + 2.5 + ] + ], + "lower_layer_picture": { + "filename": "entity:nuclear-reactor/reactor-pipes", + "width": 160, + "height": 160, + "shift": [ + -0.03125, + -0.1875 + ], + "hr_version": { + "filename": "entity:nuclear-reactor/hr-reactor-pipes", + "width": 320, + "height": 320, + "scale": 0.5, + "shift": [ + -0.03125, + -0.1875 + ] + } + }, + "picture": { + "layers": [ + { + "filename": "entity:nuclear-reactor/reactor", + "width": 160, + "height": 160, + "shift": [ + -0.03125, + -0.1875 + ], + "hr_version": { + "filename": "entity:nuclear-reactor/hr-reactor", + "width": 320, + "height": 320, + "scale": 0.5, + "shift": [ + -0.03125, + -0.1875 + ] + } + }, + { + "filename": "entity:nuclear-reactor/reactor-shadow", + "width": 263, + "height": 162, + "shift": [ + 1.625, + 0 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:nuclear-reactor/hr-reactor-shadow", + "width": 525, + "height": 323, + "scale": 0.5, + "shift": [ + 1.625, + 0 + ], + "draw_as_shadow": true + } + } + ] + }, + "working_light_picture": { + "filename": "entity:nuclear-reactor/reactor-lights-color", + "width": 160, + "height": 160, + "shift": [ + -0.03125, + -0.1875 + ], + "blend_mode": "additive", + "hr_version": { + "filename": "entity:nuclear-reactor/hr-reactor-lights-color", + "width": 320, + "height": 320, + "scale": 0.5, + "shift": [ + -0.03125, + -0.1875 + ], + "blend_mode": "additive" + } + }, + "light": { + "intensity": 0.6, + "size": 9.9, + "shift": [ + 0, + 0 + ], + "color": { + "r": 0, + "g": 1, + "b": 0 + } + }, + "heat_buffer": { + "max_temperature": 1000, + "specific_heat": "10MJ", + "max_transfer": "10GW", + "connections": [ + { + "position": [ + -2, + -2 + ], + "direction": 0 + }, + { + "position": [ + 0, + -2 + ], + "direction": 0 + }, + { + "position": [ + 2, + -2 + ], + "direction": 0 + }, + { + "position": [ + 2, + -2 + ], + "direction": 2 + }, + { + "position": [ + 2, + 0 + ], + "direction": 2 + }, + { + "position": [ + 2, + 2 + ], + "direction": 2 + }, + { + "position": [ + 2, + 2 + ], + "direction": 4 + }, + { + "position": [ + 0, + 2 + ], + "direction": 4 + }, + { + "position": [ + -2, + 2 + ], + "direction": 4 + }, + { + "position": [ + -2, + 2 + ], + "direction": 6 + }, + { + "position": [ + -2, + 0 + ], + "direction": 6 + }, + { + "position": [ + -2, + -2 + ], + "direction": 6 + } + ] + }, + "connection_patches_connected": { + "sheet": { + "filename": "entity:nuclear-reactor/reactor-connect-patches", + "width": 32, + "height": 32, + "variation_count": 12, + "hr_version": { + "filename": "entity:nuclear-reactor/hr-reactor-connect-patches", + "width": 64, + "height": 64, + "variation_count": 12, + "scale": 0.5 + } + } + }, + "connection_patches_disconnected": { + "sheet": { + "filename": "entity:nuclear-reactor/reactor-connect-patches", + "width": 32, + "height": 32, + "variation_count": 12, + "y": 32, + "hr_version": { + "filename": "entity:nuclear-reactor/hr-reactor-connect-patches", + "width": 64, + "height": 64, + "variation_count": 12, + "y": 64, + "scale": 0.5 + } + } + }, + "connection_patches": { + "0": { + "filename": "entity:nuclear-reactor/connection-patch-north", + "width": 160, + "height": 15, + "shift": [ + 0, + -2.265625 + ] + }, + "2": { + "filename": "entity:nuclear-reactor/connection-patch-east", + "width": 15, + "height": 160, + "shift": [ + 2.265625, + 0 + ] + }, + "4": { + "filename": "entity:nuclear-reactor/connection-patch-south", + "width": 160, + "height": 15, + "shift": [ + 0, + 2.265625 + ] + }, + "6": { + "filename": "entity:nuclear-reactor/connection-patch-west", + "width": 15, + "height": 160, + "shift": [ + -2.265625, + 0 + ] + } + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "meltdown_action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "target_effects": [ + { + "repeat_count": 100, + "type": "create-trivial-smoke", + "smoke_name": "nuclear-smoke", + "offset_deviation": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "slow_down_factor": 1, + "starting_frame": 3, + "starting_frame_deviation": 5, + "starting_frame_speed": 0, + "starting_frame_speed_deviation": 5, + "speed_from_center": 0.5, + "speed_deviation": 0.2 + }, + { + "type": "create-entity", + "entity_name": "explosion" + }, + { + "type": "damage", + "damage": { + "amount": 400, + "type": "explosion" + } + }, + { + "type": "create-entity", + "entity_name": "small-scorchmark", + "check_buildability": true + }, + { + "type": "nested-result", + "action": { + "type": "area", + "target_entities": false, + "repeat_count": 2000, + "radius": 35, + "action_delivery": { + "type": "projectile", + "projectile": "atomic-bomb-wave", + "starting_speed": 0.5 + } + } + } + ] + } + }, + "size": { + "width": 5, + "height": 5 + } + }, + "heat-pipe": { + "type": "heat-pipe", + "name": "heat-pipe", + "icon": "entity:icons/heat-pipe", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "player-creation" + ], + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "heat-pipe" + }, + "max_health": 200, + "corpse": "small-remnants", + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "resistances": [ + { + "type": "fire", + "percent": 90 + }, + { + "type": "explosion", + "percent": 30 + }, + { + "type": "impact", + "percent": 30 + } + ], + "collision_box": [ + [ + -0.3, + -0.3 + ], + [ + 0.3, + 0.3 + ] + ], + "selection_box": [ + [ + -0.5, + -0.5 + ], + [ + 0.5, + 0.5 + ] + ], + "minimum_glow_temperature": 350, + "glow_alpha_modifier": 0.6, + "heat_buffer": { + "max_temperature": 1000, + "specific_heat": "1MJ", + "max_transfer": "1GW", + "connections": [ + { + "position": [ + 0, + 0 + ], + "direction": 0 + }, + { + "position": [ + 0, + 0 + ], + "direction": 2 + }, + { + "position": [ + 0, + 0 + ], + "direction": 4 + }, + { + "position": [ + 0, + 0 + ], + "direction": 6 + } + ] + }, + "connection_sprites": { + "single": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-single", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-single", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "straight_vertical": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-vertical-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-vertical-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "straight_horizontal": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-horizontal-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-horizontal-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-horizontal-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-horizontal-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-horizontal-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-horizontal-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-horizontal-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-horizontal-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-horizontal-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-horizontal-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-straight-horizontal-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-straight-horizontal-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_right_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-right-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-right-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-right-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-right-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-right-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-right-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-right-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-right-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-right-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-right-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_left_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-left-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-left-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-left-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-left-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-left-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-left-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-left-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-left-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-up-left-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-up-left-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_right_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-right-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-right-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-right-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-right-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-right-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-right-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-right-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-right-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-right-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-right-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_left_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-left-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-left-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-left-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-left-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-left-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-left-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-left-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-left-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-corner-down-left-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-corner-down-left-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-t-up-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-t-up-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-t-down-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-t-down-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_right": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-t-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-t-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_left": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-t-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-t-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "cross": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-t-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-t-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-ending-up-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-ending-up-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-ending-down-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-ending-down-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_right": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-ending-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-ending-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_left": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heat-pipe-ending-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heat-pipe-ending-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ] + }, + "heat_glow_sprites": { + "single": { + "priority": "extra-high", + "filename": "entity:graphics/empty", + "width": 1, + "height": 1 + }, + "straight_vertical": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-vertical-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-vertical-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-vertical-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-vertical-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-vertical-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-vertical-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-vertical-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-vertical-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-vertical-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-vertical-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-vertical-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-vertical-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "straight_horizontal": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-horizontal-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-horizontal-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-horizontal-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-horizontal-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-horizontal-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-horizontal-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-horizontal-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-horizontal-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-horizontal-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-horizontal-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-straight-horizontal-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-straight-horizontal-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_right_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-right-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-right-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-right-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-right-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-right-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-right-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-right-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-right-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-right-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-right-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_left_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-left-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-left-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-left-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-left-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-left-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-left-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-left-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-left-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-up-left-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-up-left-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_right_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-right-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-right-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-right-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-right-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-right-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-right-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-right-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-right-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-right-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-right-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "corner_left_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-left-2", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-left-2", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-left-3", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-left-3", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-left-4", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-left-4", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-left-5", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-left-5", + "width": 64, + "height": 64, + "scale": 0.5 + } + }, + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-corner-down-left-6", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-corner-down-left-6", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-t-up-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-t-up-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-t-down-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-t-down-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_right": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-t-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-t-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "t_left": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-t-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-t-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "cross": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-t-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-t-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_up": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-ending-up-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-ending-up-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_down": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-ending-down-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-ending-down-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_right": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-ending-right-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-ending-right-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ], + "ending_left": [ + { + "priority": "extra-high", + "filename": "entity:heat-pipe/heated-ending-left-1", + "width": 32, + "height": 32, + "hr_version": { + "priority": "extra-high", + "filename": "entity:heat-pipe/hr-heated-ending-left-1", + "width": 64, + "height": 64, + "scale": 0.5 + } + } + ] + }, + "heat_glow_light": { + "color": { + "r": 1, + "g": 0.6078431372549019, + "b": 0.05, + "a": 0 + }, + "size": 2.5, + "intensity": 0.1 + }, + "size": { + "width": 1, + "height": 1 + } + }, + "artillery-turret": { + "type": "artillery-turret", + "name": "artillery-turret", + "icon": "entity:icons/artillery-turret", + "icon_size": 32, + "flags": [ + "placeable-neutral", + "placeable-player", + "player-creation" + ], + "inventory_size": 1, + "ammo_stack_limit": 15, + "automated_ammo_count": 5, + "alert_when_attacking": false, + "minable": { + "mining_time": 1, + "result": "artillery-turret" + }, + "open_sound": { + "filename": "entity:sound/machine-open", + "volume": 0.85 + }, + "close_sound": { + "filename": "entity:sound/machine-close", + "volume": 0.75 + }, + "mined_sound": { + "filename": "entity:sound/deconstruct-medium" + }, + "max_health": 2000, + "corpse": "medium-remnants", + "dying_explosion": "medium-explosion", + "collision_box": [ + [ + -1.45, + -1.45 + ], + [ + 1.45, + 1.45 + ] + ], + "selection_box": [ + [ + -1.5, + -1.5 + ], + [ + 1.5, + 1.5 + ] + ], + "gun": "artillery-wagon-cannon", + "turret_rotation_speed": 0.001, + "turn_after_shooting_cooldown": 60, + "cannon_parking_frame_count": 8, + "cannon_parking_speed": 0.25, + "manual_range_modifier": 2.5, + "resistances": [ + { + "type": "fire", + "decrease": 15, + "percent": 50 + }, + { + "type": "physical", + "decrease": 15, + "percent": 30 + }, + { + "type": "impact", + "decrease": 50, + "percent": 50 + }, + { + "type": "explosion", + "decrease": 15, + "percent": 30 + }, + { + "type": "acid", + "decrease": 10, + "percent": 20 + } + ], + "base_shift": [ + 0, + -0.6875 + ], + "base_picture_render_layer": "lower-object-above-shadow", + "base_picture": { + "layers": [ + { + "filename": "entity:artillery-turret/artillery-turret-base", + "priority": "high", + "width": 104, + "height": 100, + "direction_count": 1, + "frame_count": 1, + "shift": [ + 0, + 0 + ], + "hr_version": { + "filename": "entity:artillery-turret/hr-artillery-turret-base", + "line_length": 1, + "width": 207, + "height": 199, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0, + 0 + ], + "scale": 0.5 + } + }, + { + "filename": "entity:artillery-turret/artillery-turret-base-shadow", + "priority": "high", + "line_length": 1, + "width": 138, + "height": 75, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.5625, + 1.1875 + ], + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:artillery-turret/hr-artillery-turret-base-shadow", + "priority": "high", + "line_length": 1, + "width": 277, + "height": 149, + "frame_count": 1, + "direction_count": 1, + "shift": [ + 0.5625, + 1.1875 + ], + "draw_as_shadow": true, + "scale": 0.5 + } + } + ] + }, + "cannon_barrel_pictures": { + "layers": [ + { + "priority": "very-low", + "width": 266, + "height": 192, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 0, + -2.4375 + ], + "filenames": [ + "entity:artillery-wagon/artillery-wagon-cannon-barrel-1", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-2", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-3", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-4", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-5", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-6", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-7", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-8", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-9", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-10", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-11", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-12", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-13", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-14", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-15", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-16" + ], + "hr_version": { + "priority": "very-low", + "width": 530, + "height": 384, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 0, + -2.4375 + ], + "scale": 0.5, + "filenames": [ + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-1", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-2", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-3", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-4", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-5", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-6", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-7", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-8", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-9", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-10", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-11", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-12", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-13", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-14", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-15", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-16" + ] + } + }, + { + "priority": "very-low", + "width": 454, + "height": 314, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 1.71875, + 1.6875 + ], + "draw_as_shadow": true, + "filenames": [ + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-1", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-2", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-3", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-4", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-5", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-6", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-7", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-8", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-9", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-10", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-11", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-12", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-13", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-14", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-15", + "entity:artillery-wagon/artillery-wagon-cannon-barrel-shadow-16" + ], + "hr_version": { + "priority": "very-low", + "width": 906, + "height": 626, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 1.703125, + 1.671875 + ], + "scale": 0.5, + "draw_as_shadow": true, + "filenames": [ + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-1", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-2", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-3", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-4", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-5", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-6", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-7", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-8", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-9", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-10", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-11", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-12", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-13", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-14", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-15", + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-shadow-16" + ] + } + } + ] + }, + "cannon_base_pictures": { + "layers": [ + { + "priority": "very-low", + "width": 180, + "height": 136, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 0, + -1.9375 + ], + "filenames": [ + "entity:artillery-wagon/artillery-wagon-cannon-base-1", + "entity:artillery-wagon/artillery-wagon-cannon-base-2", + "entity:artillery-wagon/artillery-wagon-cannon-base-3", + "entity:artillery-wagon/artillery-wagon-cannon-base-4", + "entity:artillery-wagon/artillery-wagon-cannon-base-5", + "entity:artillery-wagon/artillery-wagon-cannon-base-6", + "entity:artillery-wagon/artillery-wagon-cannon-base-7", + "entity:artillery-wagon/artillery-wagon-cannon-base-8", + "entity:artillery-wagon/artillery-wagon-cannon-base-9", + "entity:artillery-wagon/artillery-wagon-cannon-base-10", + "entity:artillery-wagon/artillery-wagon-cannon-base-11", + "entity:artillery-wagon/artillery-wagon-cannon-base-12", + "entity:artillery-wagon/artillery-wagon-cannon-base-13", + "entity:artillery-wagon/artillery-wagon-cannon-base-14", + "entity:artillery-wagon/artillery-wagon-cannon-base-15", + "entity:artillery-wagon/artillery-wagon-cannon-base-16" + ], + "hr_version": { + "priority": "very-low", + "width": 358, + "height": 270, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 0, + -1.953125 + ], + "scale": 0.5, + "filenames": [ + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-1", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-2", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-3", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-4", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-5", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-6", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-7", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-8", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-9", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-10", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-11", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-12", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-13", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-14", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-15", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-16" + ] + } + }, + { + "priority": "very-low", + "width": 238, + "height": 170, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 3.5, + 1.40625 + ], + "draw_as_shadow": true, + "filenames": [ + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-1", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-2", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-3", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-4", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-5", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-6", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-7", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-8", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-9", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-10", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-11", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-12", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-13", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-14", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-15", + "entity:artillery-wagon/artillery-wagon-cannon-base-shadow-16" + ], + "hr_version": { + "priority": "very-low", + "width": 476, + "height": 340, + "direction_count": 256, + "line_length": 4, + "lines_per_file": 4, + "shift": [ + 3.515625, + 1.40625 + ], + "scale": 0.5, + "draw_as_shadow": true, + "filenames": [ + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-1", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-2", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-3", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-4", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-5", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-6", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-7", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-8", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-9", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-10", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-11", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-12", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-13", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-14", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-15", + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-shadow-16" + ] + } + } + ] + }, + "cannon_base_shiftings": [ + [ + 0, + 0.609375 + ], + [ + -0.046875, + 0.59375 + ], + [ + -0.109375, + 0.59375 + ], + [ + -0.171875, + 0.578125 + ], + [ + -0.234375, + 0.578125 + ], + [ + -0.28125, + 0.5625 + ], + [ + -0.34375, + 0.546875 + ], + [ + -0.40625, + 0.546875 + ], + [ + -0.46875, + 0.53125 + ], + [ + -0.515625, + 0.515625 + ], + [ + -0.578125, + 0.5 + ], + [ + -0.640625, + 0.484375 + ], + [ + -0.6875, + 0.46875 + ], + [ + -0.75, + 0.453125 + ], + [ + -0.796875, + 0.4375 + ], + [ + -0.859375, + 0.40625 + ], + [ + -0.90625, + 0.390625 + ], + [ + -0.953125, + 0.375 + ], + [ + -1, + 0.34375 + ], + [ + -1.0625, + 0.328125 + ], + [ + -1.109375, + 0.296875 + ], + [ + -1.15625, + 0.28125 + ], + [ + -1.203125, + 0.25 + ], + [ + -1.25, + 0.234375 + ], + [ + -1.296875, + 0.203125 + ], + [ + -1.328125, + 0.171875 + ], + [ + -1.375, + 0.140625 + ], + [ + -1.421875, + 0.125 + ], + [ + -1.453125, + 0.09375 + ], + [ + -1.5, + 0.0625 + ], + [ + -1.53125, + 0.03125 + ], + [ + -1.578125, + 0 + ], + [ + -1.609375, + -0.015625 + ], + [ + -1.640625, + -0.046875 + ], + [ + -1.671875, + -0.078125 + ], + [ + -1.703125, + -0.109375 + ], + [ + -1.734375, + -0.15625 + ], + [ + -1.765625, + -0.1875 + ], + [ + -1.796875, + -0.21875 + ], + [ + -1.8125, + -0.25 + ], + [ + -1.84375, + -0.28125 + ], + [ + -1.875, + -0.328125 + ], + [ + -1.890625, + -0.359375 + ], + [ + -1.90625, + -0.390625 + ], + [ + -1.9375, + -0.421875 + ], + [ + -1.953125, + -0.46875 + ], + [ + -1.96875, + -0.5 + ], + [ + -1.984375, + -0.53125 + ], + [ + -2, + -0.578125 + ], + [ + -2.015625, + -0.609375 + ], + [ + -2.03125, + -0.65625 + ], + [ + -2.03125, + -0.6875 + ], + [ + -2.046875, + -0.71875 + ], + [ + -2.046875, + -0.765625 + ], + [ + -2.0625, + -0.796875 + ], + [ + -2.0625, + -0.828125 + ], + [ + -2.0625, + -0.875 + ], + [ + -2.078125, + -0.90625 + ], + [ + -2.078125, + -0.9375 + ], + [ + -2.078125, + -0.984375 + ], + [ + -2.078125, + -1.015625 + ], + [ + -2.0625, + -1.0625 + ], + [ + -2.0625, + -1.09375 + ], + [ + -2.0625, + -1.125 + ], + [ + -2.046875, + -1.15625 + ], + [ + -2.0625, + -1.203125 + ], + [ + -2.0625, + -1.234375 + ], + [ + -2.078125, + -1.265625 + ], + [ + -2.078125, + -1.3125 + ], + [ + -2.078125, + -1.34375 + ], + [ + -2.078125, + -1.375 + ], + [ + -2.078125, + -1.421875 + ], + [ + -2.078125, + -1.453125 + ], + [ + -2.078125, + -1.5 + ], + [ + -2.0625, + -1.53125 + ], + [ + -2.0625, + -1.5625 + ], + [ + -2.046875, + -1.609375 + ], + [ + -2.046875, + -1.640625 + ], + [ + -2.03125, + -1.671875 + ], + [ + -2.015625, + -1.71875 + ], + [ + -2.015625, + -1.75 + ], + [ + -2, + -1.796875 + ], + [ + -1.984375, + -1.828125 + ], + [ + -1.96875, + -1.859375 + ], + [ + -1.953125, + -1.90625 + ], + [ + -1.921875, + -1.9375 + ], + [ + -1.90625, + -1.96875 + ], + [ + -1.890625, + -2 + ], + [ + -1.859375, + -2.046875 + ], + [ + -1.84375, + -2.078125 + ], + [ + -1.8125, + -2.109375 + ], + [ + -1.78125, + -2.140625 + ], + [ + -1.75, + -2.1875 + ], + [ + -1.71875, + -2.21875 + ], + [ + -1.6875, + -2.25 + ], + [ + -1.65625, + -2.28125 + ], + [ + -1.625, + -2.3125 + ], + [ + -1.59375, + -2.34375 + ], + [ + -1.5625, + -2.375 + ], + [ + -1.515625, + -2.40625 + ], + [ + -1.484375, + -2.4375 + ], + [ + -1.4375, + -2.46875 + ], + [ + -1.40625, + -2.5 + ], + [ + -1.359375, + -2.53125 + ], + [ + -1.3125, + -2.546875 + ], + [ + -1.265625, + -2.578125 + ], + [ + -1.234375, + -2.609375 + ], + [ + -1.1875, + -2.625 + ], + [ + -1.140625, + -2.65625 + ], + [ + -1.078125, + -2.671875 + ], + [ + -1.03125, + -2.703125 + ], + [ + -0.984375, + -2.71875 + ], + [ + -0.9375, + -2.75 + ], + [ + -0.890625, + -2.765625 + ], + [ + -0.828125, + -2.78125 + ], + [ + -0.78125, + -2.8125 + ], + [ + -0.71875, + -2.828125 + ], + [ + -0.671875, + -2.84375 + ], + [ + -0.609375, + -2.859375 + ], + [ + -0.546875, + -2.875 + ], + [ + -0.5, + -2.890625 + ], + [ + -0.4375, + -2.90625 + ], + [ + -0.375, + -2.90625 + ], + [ + -0.328125, + -2.921875 + ], + [ + -0.265625, + -2.9375 + ], + [ + -0.203125, + -2.9375 + ], + [ + -0.140625, + -2.953125 + ], + [ + -0.078125, + -2.953125 + ], + [ + -0.015625, + -2.96875 + ], + [ + 0.03125, + -2.96875 + ], + [ + 0.09375, + -2.953125 + ], + [ + 0.15625, + -2.953125 + ], + [ + 0.21875, + -2.9375 + ], + [ + 0.265625, + -2.9375 + ], + [ + 0.328125, + -2.921875 + ], + [ + 0.390625, + -2.90625 + ], + [ + 0.453125, + -2.890625 + ], + [ + 0.515625, + -2.890625 + ], + [ + 0.5625, + -2.875 + ], + [ + 0.625, + -2.859375 + ], + [ + 0.671875, + -2.84375 + ], + [ + 0.734375, + -2.828125 + ], + [ + 0.78125, + -2.796875 + ], + [ + 0.84375, + -2.78125 + ], + [ + 0.890625, + -2.765625 + ], + [ + 0.953125, + -2.75 + ], + [ + 1, + -2.71875 + ], + [ + 1.046875, + -2.703125 + ], + [ + 1.09375, + -2.671875 + ], + [ + 1.140625, + -2.65625 + ], + [ + 1.1875, + -2.625 + ], + [ + 1.234375, + -2.609375 + ], + [ + 1.28125, + -2.578125 + ], + [ + 1.328125, + -2.546875 + ], + [ + 1.375, + -2.515625 + ], + [ + 1.40625, + -2.5 + ], + [ + 1.453125, + -2.46875 + ], + [ + 1.484375, + -2.4375 + ], + [ + 1.53125, + -2.40625 + ], + [ + 1.5625, + -2.375 + ], + [ + 1.609375, + -2.34375 + ], + [ + 1.640625, + -2.3125 + ], + [ + 1.671875, + -2.28125 + ], + [ + 1.703125, + -2.25 + ], + [ + 1.734375, + -2.21875 + ], + [ + 1.765625, + -2.1875 + ], + [ + 1.796875, + -2.140625 + ], + [ + 1.828125, + -2.109375 + ], + [ + 1.84375, + -2.078125 + ], + [ + 1.875, + -2.046875 + ], + [ + 1.890625, + -2 + ], + [ + 1.921875, + -1.96875 + ], + [ + 1.9375, + -1.9375 + ], + [ + 1.953125, + -1.90625 + ], + [ + 1.96875, + -1.859375 + ], + [ + 1.984375, + -1.828125 + ], + [ + 2, + -1.796875 + ], + [ + 2.015625, + -1.75 + ], + [ + 2.03125, + -1.71875 + ], + [ + 2.046875, + -1.671875 + ], + [ + 2.046875, + -1.640625 + ], + [ + 2.0625, + -1.609375 + ], + [ + 2.078125, + -1.5625 + ], + [ + 2.078125, + -1.53125 + ], + [ + 2.078125, + -1.5 + ], + [ + 2.078125, + -1.453125 + ], + [ + 2.09375, + -1.421875 + ], + [ + 2.09375, + -1.375 + ], + [ + 2.09375, + -1.34375 + ], + [ + 2.078125, + -1.3125 + ], + [ + 2.078125, + -1.265625 + ], + [ + 2.078125, + -1.234375 + ], + [ + 2.078125, + -1.203125 + ], + [ + 2.078125, + -1.171875 + ], + [ + 2.078125, + -1.125 + ], + [ + 2.09375, + -1.09375 + ], + [ + 2.09375, + -1.0625 + ], + [ + 2.09375, + -1.015625 + ], + [ + 2.09375, + -0.984375 + ], + [ + 2.09375, + -0.953125 + ], + [ + 2.09375, + -0.90625 + ], + [ + 2.09375, + -0.875 + ], + [ + 2.09375, + -0.828125 + ], + [ + 2.078125, + -0.796875 + ], + [ + 2.078125, + -0.765625 + ], + [ + 2.0625, + -0.71875 + ], + [ + 2.0625, + -0.6875 + ], + [ + 2.046875, + -0.640625 + ], + [ + 2.03125, + -0.609375 + ], + [ + 2.03125, + -0.578125 + ], + [ + 2.015625, + -0.53125 + ], + [ + 2, + -0.5 + ], + [ + 1.96875, + -0.46875 + ], + [ + 1.953125, + -0.421875 + ], + [ + 1.9375, + -0.390625 + ], + [ + 1.921875, + -0.359375 + ], + [ + 1.890625, + -0.3125 + ], + [ + 1.875, + -0.28125 + ], + [ + 1.84375, + -0.25 + ], + [ + 1.8125, + -0.21875 + ], + [ + 1.796875, + -0.1875 + ], + [ + 1.765625, + -0.140625 + ], + [ + 1.734375, + -0.109375 + ], + [ + 1.703125, + -0.078125 + ], + [ + 1.671875, + -0.046875 + ], + [ + 1.625, + -0.015625 + ], + [ + 1.59375, + 0 + ], + [ + 1.5625, + 0.03125 + ], + [ + 1.515625, + 0.0625 + ], + [ + 1.484375, + 0.09375 + ], + [ + 1.4375, + 0.125 + ], + [ + 1.40625, + 0.15625 + ], + [ + 1.359375, + 0.171875 + ], + [ + 1.3125, + 0.203125 + ], + [ + 1.265625, + 0.234375 + ], + [ + 1.21875, + 0.25 + ], + [ + 1.171875, + 0.28125 + ], + [ + 1.125, + 0.3125 + ], + [ + 1.078125, + 0.328125 + ], + [ + 1.03125, + 0.359375 + ], + [ + 0.984375, + 0.375 + ], + [ + 0.921875, + 0.390625 + ], + [ + 0.875, + 0.421875 + ], + [ + 0.828125, + 0.4375 + ], + [ + 0.765625, + 0.453125 + ], + [ + 0.71875, + 0.46875 + ], + [ + 0.65625, + 0.484375 + ], + [ + 0.59375, + 0.5 + ], + [ + 0.546875, + 0.515625 + ], + [ + 0.484375, + 0.53125 + ], + [ + 0.421875, + 0.546875 + ], + [ + 0.359375, + 0.5625 + ], + [ + 0.3125, + 0.5625 + ], + [ + 0.25, + 0.578125 + ], + [ + 0.1875, + 0.59375 + ], + [ + 0.125, + 0.59375 + ] + ], + "cannon_barrel_recoil_shiftings": [ + { + "x": 0, + "y": 0.04, + "z": 0 + }, + { + "x": -0.789, + "y": 0.037, + "z": -0.351 + }, + { + "x": -1.578, + "y": 0.035, + "z": -0.702 + }, + { + "x": -2.367, + "y": 0.033, + "z": -1.054 + }, + { + "x": -3.155, + "y": 0.031, + "z": -1.405 + }, + { + "x": -3.944, + "y": 0.028, + "z": -1.756 + }, + { + "x": -3.931, + "y": 0.028, + "z": -1.75 + }, + { + "x": -3.901, + "y": 0.028, + "z": -1.737 + }, + { + "x": -3.854, + "y": 0.029, + "z": -1.716 + }, + { + "x": -3.79, + "y": 0.029, + "z": -1.688 + }, + { + "x": -3.711, + "y": 0.029, + "z": -1.652 + }, + { + "x": -3.617, + "y": 0.029, + "z": -1.61 + }, + { + "x": -3.508, + "y": 0.03, + "z": -1.562 + }, + { + "x": -3.385, + "y": 0.03, + "z": -1.507 + }, + { + "x": -3.249, + "y": 0.03, + "z": -1.447 + }, + { + "x": -3.102, + "y": 0.031, + "z": -1.381 + }, + { + "x": -2.944, + "y": 0.031, + "z": -1.311 + }, + { + "x": -2.776, + "y": 0.032, + "z": -1.236 + }, + { + "x": -2.599, + "y": 0.032, + "z": -1.157 + }, + { + "x": -2.416, + "y": 0.033, + "z": -1.076 + }, + { + "x": -2.226, + "y": 0.033, + "z": -0.991 + }, + { + "x": -2.032, + "y": 0.034, + "z": -0.905 + }, + { + "x": -1.835, + "y": 0.034, + "z": -0.817 + }, + { + "x": -1.635, + "y": 0.035, + "z": -0.728 + }, + { + "x": -1.436, + "y": 0.035, + "z": -0.639 + }, + { + "x": -1.238, + "y": 0.036, + "z": -0.551 + }, + { + "x": -1.042, + "y": 0.037, + "z": -0.464 + }, + { + "x": -0.851, + "y": 0.037, + "z": -0.379 + }, + { + "x": -0.665, + "y": 0.038, + "z": -0.296 + }, + { + "x": -0.485, + "y": 0.038, + "z": -0.216 + }, + { + "x": -0.314, + "y": 0.039, + "z": -0.14 + }, + { + "x": -0.152, + "y": 0.039, + "z": -0.068 + } + ], + "cannon_barrel_light_direction": [ + 0.5976251, + 0.0242053, + -0.8014102 + ], + "cannon_barrel_recoil_shiftings_load_correction_matrix": [ + [ + 0, + 0.25, + 0 + ], + [ + -0.25, + 0, + 0 + ], + [ + 0, + 0, + 0.25 + ] + ], + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "size": { + "width": 3, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "laser-turret": { + "type": "electric-turret", + "name": "laser-turret", + "icon": "entity:icons/laser-turret", + "icon_size": 32, + "flags": [ + "placeable-player", + "placeable-enemy", + "player-creation" + ], + "minable": { + "mining_time": 0.5, + "result": "laser-turret" + }, + "max_health": 1000, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.7, + -0.7 + ], + [ + 0.7, + 0.7 + ] + ], + "selection_box": [ + [ + -1, + -1 + ], + [ + 1, + 1 + ] + ], + "rotation_speed": 0.01, + "preparing_speed": 0.05, + "dying_explosion": "medium-explosion", + "folding_speed": 0.05, + "energy_source": { + "type": "electric", + "buffer_capacity": "801kJ", + "input_flow_limit": "9600kW", + "drain": "24kW", + "usage_priority": "primary-input" + }, + "folded_animation": { + "layers": [ + { + "filename": "entity:laser-turret/laser-turret-gun-start", + "priority": "medium", + "width": 66, + "height": 67, + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "axially_symmetrical": false, + "direction_count": 4, + "shift": [ + -0.03125, + -0.984375 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-start-shadow", + "width": 92, + "height": 50, + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "axially_symmetrical": false, + "direction_count": 4, + "draw_as_shadow": true, + "shift": [ + 1.375, + 0 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-start-mask", + "flags": [ + "mask" + ], + "width": 51, + "height": 47, + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "axially_symmetrical": false, + "apply_runtime_tint": true, + "direction_count": 4, + "shift": [ + -0.015625, + -1.26563 + ] + } + ] + }, + "preparing_animation": { + "layers": [ + { + "filename": "entity:laser-turret/laser-turret-gun-start", + "priority": "medium", + "width": 66, + "height": 67, + "frame_count": 15, + "line_length": 0, + "run_mode": "forward", + "axially_symmetrical": false, + "direction_count": 4, + "shift": [ + -0.03125, + -0.984375 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-start-shadow", + "width": 92, + "height": 50, + "frame_count": 15, + "line_length": 0, + "run_mode": "forward", + "axially_symmetrical": false, + "direction_count": 4, + "draw_as_shadow": true, + "shift": [ + 1.375, + 0 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-start-mask", + "flags": [ + "mask" + ], + "width": 51, + "height": 47, + "frame_count": 15, + "line_length": 0, + "run_mode": "forward", + "axially_symmetrical": false, + "apply_runtime_tint": true, + "direction_count": 4, + "shift": [ + -0.015625, + -1.26563 + ] + } + ] + }, + "prepared_animation": { + "layers": [ + { + "filename": "entity:laser-turret/laser-turret-gun", + "line_length": 8, + "width": 68, + "height": 68, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.03125, + -1 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-mask", + "flags": [ + "mask" + ], + "line_length": 8, + "width": 54, + "height": 44, + "frame_count": 1, + "axially_symmetrical": false, + "apply_runtime_tint": true, + "direction_count": 64, + "shift": [ + -0.03125, + -1.3125 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-shadow", + "line_length": 8, + "width": 88, + "height": 52, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "draw_as_shadow": true, + "shift": [ + 1.5, + 0 + ] + } + ] + }, + "folding_animation": { + "layers": [ + { + "filename": "entity:laser-turret/laser-turret-gun-start", + "priority": "medium", + "width": 66, + "height": 67, + "frame_count": 15, + "line_length": 0, + "run_mode": "backward", + "axially_symmetrical": false, + "direction_count": 4, + "shift": [ + -0.03125, + -0.984375 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-start-shadow", + "width": 92, + "height": 50, + "frame_count": 15, + "line_length": 0, + "run_mode": "backward", + "axially_symmetrical": false, + "direction_count": 4, + "draw_as_shadow": true, + "shift": [ + 1.375, + 0 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-gun-start-mask", + "flags": [ + "mask" + ], + "width": 51, + "height": 47, + "frame_count": 15, + "line_length": 0, + "run_mode": "backward", + "axially_symmetrical": false, + "apply_runtime_tint": true, + "direction_count": 4, + "shift": [ + -0.015625, + -1.26563 + ] + } + ] + }, + "base_picture": { + "layers": [ + { + "filename": "entity:laser-turret/laser-turret-base", + "priority": "high", + "width": 98, + "height": 82, + "axially_symmetrical": false, + "direction_count": 1, + "frame_count": 1, + "shift": [ + 0.015625, + 0.03125 + ] + }, + { + "filename": "entity:laser-turret/laser-turret-base-mask", + "flags": [ + "mask" + ], + "line_length": 1, + "width": 54, + "height": 46, + "axially_symmetrical": false, + "apply_runtime_tint": true, + "direction_count": 1, + "frame_count": 1, + "shift": [ + -0.046875, + -0.109375 + ] + } + ] + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "attack_parameters": { + "type": "projectile", + "ammo_category": "electric", + "cooldown": 20, + "projectile_center": [ + -0.09375, + -0.2 + ], + "projectile_creation_distance": 1.4, + "range": 24, + "damage_modifier": 4, + "ammo_type": { + "type": "projectile", + "category": "laser-turret", + "energy_consumption": "800kJ", + "action": [ + { + "type": "direct", + "action_delivery": [ + { + "type": "projectile", + "projectile": "laser", + "starting_speed": 0.35 + } + ] + } + ] + }, + "sound": [ + { + "filename": "entity:fight/laser-1", + "volume": 0.5 + }, + { + "filename": "entity:fight/laser-2", + "volume": 0.5 + }, + { + "filename": "entity:fight/laser-3", + "volume": 0.5 + } + ] + }, + "call_for_help_radius": 40, + "size": { + "width": 2, + "height": 2 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + }, + "flamethrower-turret": { + "type": "fluid-turret", + "name": "flamethrower-turret", + "icon": "entity:icons/flamethrower-turret", + "icon_size": 32, + "flags": [ + "placeable-player", + "player-creation" + ], + "minable": { + "mining_time": 0.5, + "result": "flamethrower-turret" + }, + "max_health": 1400, + "corpse": "medium-remnants", + "collision_box": [ + [ + -0.7, + -1.2 + ], + [ + 0.7, + 1.2 + ] + ], + "selection_box": [ + [ + -1, + -1.5 + ], + [ + 1, + 1.5 + ] + ], + "rotation_speed": 0.015, + "preparing_speed": 0.08, + "folding_speed": 0.08, + "attacking_speed": 1, + "ending_attack_speed": 0.2, + "dying_explosion": "medium-explosion", + "inventory_size": 1, + "automated_ammo_count": 10, + "attacking_animation_fade_out": 10, + "turret_base_has_direction": true, + "resistances": [ + { + "type": "fire", + "percent": 100 + } + ], + "fluid_box": { + "secondary_draw_order": 0, + "render_layer": "lower-object", + "pipe_picture": { + "0": { + "filename": "entity:pipe/pipe-straight-vertical", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-vertical", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "shift": [ + 0, + 1 + ] + }, + "shift": [ + 0, + 1 + ] + }, + "2": { + "filename": "entity:pipe/pipe-straight-horizontal", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-horizontal", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "shift": [ + -1, + 0 + ] + }, + "shift": [ + -1, + 0 + ] + }, + "4": { + "filename": "entity:pipe/pipe-straight-vertical", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-vertical", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "shift": [ + 0, + -1 + ] + }, + "shift": [ + 0, + -1 + ] + }, + "6": { + "filename": "entity:pipe/pipe-straight-horizontal", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe/hr-pipe-straight-horizontal", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "shift": [ + 1, + 0 + ] + }, + "shift": [ + 1, + 0 + ] + } + }, + "pipe_covers": { + "0": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-north", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-north-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-north-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-east", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-east-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-east-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-south", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-south-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-south-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:pipe-covers/pipe-cover-west", + "priority": "extra-high", + "width": 64, + "height": 64, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5 + } + }, + { + "filename": "entity:pipe-covers/pipe-cover-west-shadow", + "priority": "extra-high", + "width": 64, + "height": 64, + "draw_as_shadow": true, + "hr_version": { + "filename": "entity:pipe-covers/hr-pipe-cover-west-shadow", + "priority": "extra-high", + "width": 128, + "height": 128, + "scale": 0.5, + "draw_as_shadow": true + } + } + ] + } + }, + "base_area": 1, + "pipe_connections": [ + { + "position": [ + -1.5, + 1 + ] + }, + { + "position": [ + 1.5, + 1 + ] + } + ] + }, + "fluid_buffer_size": 100, + "fluid_buffer_input_flow": 0.8333333333333334, + "activation_buffer_ratio": 0.25, + "folded_animation": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -1.109375 + ], + "y": 0 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -1.109375 + ], + "apply_runtime_tint": true, + "y": 0 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.04688, + -0.3125 + ], + "draw_as_shadow": true, + "y": 0 + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.625, + -0.484375 + ], + "y": 585 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.625, + -0.484375 + ], + "apply_runtime_tint": true, + "y": 549 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.67188, + 0.3125 + ], + "draw_as_shadow": true, + "y": 504 + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -0.171875 + ], + "y": 390 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -0.171875 + ], + "apply_runtime_tint": true, + "y": 366 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.04688, + 0.625 + ], + "draw_as_shadow": true, + "y": 336 + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + -0.46875, + -0.484375 + ], + "y": 195 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + -0.46875, + -0.484375 + ], + "apply_runtime_tint": true, + "y": 183 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 1, + "line_length": 1, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.57813, + 0.3125 + ], + "draw_as_shadow": true, + "y": 168 + } + ] + } + }, + "preparing_animation": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -1.109375 + ], + "y": 0 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -1.109375 + ], + "apply_runtime_tint": true, + "y": 0 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.04688, + -0.3125 + ], + "draw_as_shadow": true, + "y": 0 + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.625, + -0.484375 + ], + "y": 585 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.625, + -0.484375 + ], + "apply_runtime_tint": true, + "y": 549 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.67188, + 0.3125 + ], + "draw_as_shadow": true, + "y": 504 + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -0.171875 + ], + "y": 390 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -0.171875 + ], + "apply_runtime_tint": true, + "y": 366 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.04688, + 0.625 + ], + "draw_as_shadow": true, + "y": 336 + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + -0.46875, + -0.484375 + ], + "y": 195 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + -0.46875, + -0.484375 + ], + "apply_runtime_tint": true, + "y": 183 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "forward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.57813, + 0.3125 + ], + "draw_as_shadow": true, + "y": 168 + } + ] + } + }, + "prepared_animation": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.0625 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.171875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.984375, + -0.296875 + ], + "draw_as_shadow": true + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.4375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.546875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 1.609375, + 0.328125 + ], + "draw_as_shadow": true + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.234375 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.984375, + 0.640625 + ], + "draw_as_shadow": true + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.4375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.546875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.515625, + 0.328125 + ], + "draw_as_shadow": true + } + ] + } + }, + "attacking_animation": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.0625 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.078125 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.171875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.984375, + -0.296875 + ], + "draw_as_shadow": true + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.4375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.453125 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.546875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 1.609375, + 0.328125 + ], + "draw_as_shadow": true + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.140625 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.234375 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.984375, + 0.640625 + ], + "draw_as_shadow": true + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.4375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.453125 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.546875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.515625, + 0.328125 + ], + "draw_as_shadow": true + } + ] + } + }, + "ending_attack_animation": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.0625 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.078125 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -1.171875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.984375, + -0.296875 + ], + "draw_as_shadow": true + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.4375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.453125 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.625, + -0.546875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 1.609375, + 0.328125 + ], + "draw_as_shadow": true + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.140625 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0, + -0.234375 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.984375, + 0.640625 + ], + "draw_as_shadow": true + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun", + "priority": "medium", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 64, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.4375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-active", + "counterclockwise": true, + "line_length": 8, + "width": 78, + "height": 63, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.453125 + ], + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.5 + }, + "blend_mode": "additive" + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-mask", + "flags": [ + "mask" + ], + "counterclockwise": true, + "line_length": 8, + "width": 72, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + -0.46875, + -0.546875 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-shadow", + "counterclockwise": true, + "line_length": 8, + "width": 91, + "height": 57, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 64, + "shift": [ + 0.515625, + 0.328125 + ], + "draw_as_shadow": true + } + ] + } + }, + "folding_animation": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -1.109375 + ], + "y": 0 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -1.109375 + ], + "apply_runtime_tint": true, + "y": 0 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.04688, + -0.3125 + ], + "draw_as_shadow": true, + "y": 0 + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.625, + -0.484375 + ], + "y": 585 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.625, + -0.484375 + ], + "apply_runtime_tint": true, + "y": 549 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.67188, + 0.3125 + ], + "draw_as_shadow": true, + "y": 504 + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -0.171875 + ], + "y": 390 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0, + -0.171875 + ], + "apply_runtime_tint": true, + "y": 366 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 1.04688, + 0.625 + ], + "draw_as_shadow": true, + "y": 336 + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension", + "priority": "medium", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 78, + "height": 65, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + -0.46875, + -0.484375 + ], + "y": 195 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask", + "flags": [ + "mask" + ], + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 74, + "height": 61, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + -0.46875, + -0.484375 + ], + "apply_runtime_tint": true, + "y": 183 + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-gun-extension-shadow", + "frame_count": 15, + "line_length": 5, + "run_mode": "backward", + "width": 91, + "height": 56, + "direction_count": 1, + "axially_symmetrical": false, + "shift": [ + 0.57813, + 0.3125 + ], + "draw_as_shadow": true, + "y": 168 + } + ] + } + }, + "not_enough_fuel_indicator_picture": { + "0": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-north", + "line_length": 2, + "width": 5, + "height": 9, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.234375, + 0.640625 + ] + }, + "2": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-east", + "line_length": 2, + "width": 10, + "height": 6, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -1.03125, + -0.15625 + ] + }, + "4": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-south", + "line_length": 2, + "width": 5, + "height": 8, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.234375, + -1.375 + ] + }, + "6": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-west", + "line_length": 2, + "width": 10, + "height": 6, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 1.03125, + -0.46875 + ] + } + }, + "enough_fuel_indicator_picture": { + "0": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-north", + "line_length": 2, + "width": 5, + "height": 9, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.234375, + 0.640625 + ], + "x": 5 + }, + "2": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-east", + "line_length": 2, + "width": 10, + "height": 6, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -1.03125, + -0.15625 + ], + "x": 10 + }, + "4": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-south", + "line_length": 2, + "width": 5, + "height": 8, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.234375, + -1.375 + ], + "x": 5 + }, + "6": { + "filename": "entity:flamethrower-turret/flamethrower-turret-led-indicator-west", + "line_length": 2, + "width": 10, + "height": 6, + "frame_count": 2, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 1.03125, + -0.46875 + ], + "x": 10 + } + }, + "indicator_light": { + "intensity": 0.8, + "size": 0.9 + }, + "gun_animation_render_layer": "object", + "gun_animation_secondary_draw_order": 1, + "base_picture_render_layer": "lower-object", + "base_picture_secondary_draw_order": 1, + "base_picture": { + "0": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-north", + "line_length": 1, + "width": 69, + "height": 86, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.015625, + 0.34375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-north-mask", + "flags": [ + "mask" + ], + "line_length": 1, + "width": 37, + "height": 37, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.015625, + 1.04688 + ], + "apply_runtime_tint": true + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-north-shadow", + "draw_as_shadow": true, + "line_length": 1, + "width": 71, + "height": 78, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.140625, + 0.46875 + ] + } + ] + }, + "2": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-east", + "line_length": 1, + "width": 95, + "height": 60, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -0.140625, + 0.125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-east-mask", + "flags": [ + "mask" + ], + "apply_runtime_tint": true, + "line_length": 1, + "width": 33, + "height": 42, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + -1.01563, + 0.03125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-east-shadow", + "draw_as_shadow": true, + "line_length": 1, + "width": 100, + "height": 44, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.03125, + 0.28125 + ] + } + ] + }, + "4": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-south", + "line_length": 1, + "width": 70, + "height": 90, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0, + -0.15625 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-south-mask", + "flags": [ + "mask" + ], + "apply_runtime_tint": true, + "line_length": 1, + "width": 37, + "height": 37, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.015625, + -0.953125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-south-shadow", + "draw_as_shadow": true, + "line_length": 1, + "width": 67, + "height": 70, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.140625, + -0.0625 + ] + } + ] + }, + "6": { + "layers": [ + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-west", + "line_length": 1, + "width": 93, + "height": 59, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.140625, + 0.203125 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-west-mask", + "flags": [ + "mask" + ], + "apply_runtime_tint": true, + "line_length": 1, + "width": 33, + "height": 40, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 1.01563, + 0.09375 + ] + }, + { + "filename": "entity:flamethrower-turret/flamethrower-turret-base-west-shadow", + "draw_as_shadow": true, + "line_length": 1, + "width": 103, + "height": 45, + "frame_count": 1, + "axially_symmetrical": false, + "direction_count": 1, + "shift": [ + 0.484375, + 0.296875 + ] + } + ] + } + }, + "muzzle_animation": { + "filename": "entity:flamethrower-turret/flamethrower-turret-muzzle-fire", + "line_length": 8, + "width": 17, + "height": 41, + "frame_count": 32, + "axially_symmetrical": false, + "direction_count": 1, + "blend_mode": "additive", + "scale": 0.5, + "shift": [ + 0.0078125, + -0.2234375 + ] + }, + "muzzle_light": { + "intensity": 0.7, + "size": 3 + }, + "folded_muzzle_animation_shift": { + "rotations": [ + { + "frames": [ + [ + 6.547803732916165e-17, + -1.4590777198723306 + ] + ], + "render_layer": "object" + }, + { + "frames": [ + [ + 1.0693375, + -0.7029419222453116 + ] + ] + }, + { + "frames": [ + [ + 6.547803732916165e-17, + 0.05319387538170744 + ] + ] + }, + { + "frames": [ + [ + -1.0693375, + -0.7029419222453115 + ] + ] + } + ], + "direction_shift": { + "0": [ + 0, + -0.3125 + ], + "2": [ + 0.625, + 0.3125 + ], + "4": [ + 0, + 0.625 + ], + "6": [ + -0.46875, + 0.3125 + ] + } + }, + "preparing_muzzle_animation_shift": { + "rotations": [ + { + "frames": [ + [ + 6.547803732916165e-17, + -1.4590777198723306 + ], + [ + 6.430237263876306e-17, + -1.4914130973926114 + ], + [ + 6.295363094513917e-17, + -1.5211108176413644 + ], + [ + 6.143440298106037e-17, + -1.548113835702266 + ], + [ + 5.974760695813893e-17, + -1.5723702827822625 + ], + [ + 5.789648296137726e-17, + -1.593833565843828 + ], + [ + 5.588458672544502e-17, + -1.6124624571032795 + ], + [ + 5.371578280464032e-17, + -1.6282211732232355 + ], + [ + 5.139423714965394e-17, + -1.641079444047103 + ], + [ + 4.8924409105395874e-17, + -1.6510125707435543 + ], + [ + 4.631104284525516e-17, + -1.6580014732493227 + ], + [ + 4.355915825824629e-17, + -1.6620327269191726 + ], + [ + 4.067404130654696e-17, + -1.6630985883126534 + ], + [ + 3.7661233871948606e-17, + -1.6611970100680988 + ], + [ + 3.452652311072337e-17, + -1.6563316448353067 + ] + ], + "render_layer": "object" + }, + { + "frames": [ + [ + 1.0693375, + -0.7029419222453116 + ], + [ + 1.0501374385420006, + -0.7488537934217412 + ], + [ + 1.0281108151177947, + -0.7941266884603916 + ], + [ + 1.003299939604356, + -0.83867364484402 + ], + [ + 0.9757524700140081, + -0.8824090944758805 + ], + [ + 0.9455213209504496, + -0.9252490280433479 + ], + [ + 0.9126645619676474, + -0.967111156387349 + ], + [ + 0.8772453060268373, + -1.0079150685676326 + ], + [ + 0.8393315882658836, + -1.0475823863202611 + ], + [ + 0.7989962353138709, + -1.0860369146106317 + ], + [ + 0.7563167254019478, + -1.1232047879928373 + ], + [ + 0.7113750395391369, + -1.1590146124942344 + ], + [ + 0.6642575040389737, + -1.1933976027526763 + ], + [ + 0.6150546246994615, + -1.226287714142992 + ], + [ + 0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + 6.547803732916165e-17, + 0.05319387538170744 + ], + [ + 6.430237263876306e-17, + -0.006294489450871084 + ], + [ + 6.295363094513917e-17, + -0.06714255927941898 + ], + [ + 6.143440298106037e-17, + -0.1292334539857739 + ], + [ + 5.974760695813893e-17, + -0.19244790616949825 + ], + [ + 5.789648296137726e-17, + -0.25666449024286786 + ], + [ + 5.588458672544502e-17, + -0.32175985567141885 + ], + [ + 5.371578280464032e-17, + -0.3876089639120295 + ], + [ + 5.139423714965394e-17, + -0.4540853285934194 + ], + [ + 4.8924409105395874e-17, + -0.5210612584777091 + ], + [ + 4.631104284525516e-17, + -0.5884081027363519 + ], + [ + 4.355915825824629e-17, + -0.655996498069296 + ], + [ + 4.067404130654696e-17, + -0.7236966171926988 + ], + [ + 3.7661233871948606e-17, + -0.791378418217885 + ], + [ + 3.452652311072337e-17, + -0.8589118944425292 + ] + ] + }, + { + "frames": [ + [ + -1.0693375, + -0.7029419222453115 + ], + [ + -1.0501374385420006, + -0.748853793421741 + ], + [ + -1.0281108151177947, + -0.7941266884603915 + ], + [ + -1.003299939604356, + -0.8386736448440198 + ], + [ + -0.9757524700140081, + -0.8824090944758802 + ], + [ + -0.9455213209504496, + -0.9252490280433477 + ], + [ + -0.9126645619676474, + -0.9671111563873489 + ], + [ + -0.8772453060268373, + -1.0079150685676326 + ], + [ + -0.8393315882658836, + -1.0475823863202611 + ], + [ + -0.7989962353138709, + -1.0860369146106317 + ], + [ + -0.7563167254019478, + -1.1232047879928373 + ], + [ + -0.7113750395391369, + -1.1590146124942344 + ], + [ + -0.6642575040389737, + -1.1933976027526763 + ], + [ + -0.6150546246994615, + -1.226287714142992 + ], + [ + -0.5638609129548549, + -1.257621769638918 + ] + ] + } + ], + "direction_shift": { + "0": [ + 0, + -0.3125 + ], + "2": [ + 0.625, + 0.3125 + ], + "4": [ + 0, + 0.625 + ], + "6": [ + -0.46875, + 0.3125 + ] + } + }, + "prepared_muzzle_animation_shift": { + "rotations": [ + { + "frames": [ + [ + 3.452652311072337e-17, + -1.6563316448353067 + ] + ] + }, + { + "frames": [ + [ + 0.055268034231450255, + -1.6544117478077418 + ] + ] + }, + { + "frames": [ + [ + 0.11000380708067072, + -1.648670546382945 + ] + ] + }, + { + "frames": [ + [ + 0.16368018313350652, + -1.6391633314690972 + ] + ] + }, + { + "frames": [ + [ + 0.215780229546077, + -1.6259816627429913 + ] + ] + }, + { + "frames": [ + [ + 0.26580219439064656, + -1.609252486880292 + ] + ] + }, + { + "frames": [ + [ + 0.31326433880097443, + -1.5891369149896557 + ] + ] + }, + { + "frames": [ + [ + 0.3577095763809419, + -1.5658286710246785 + ] + ] + }, + { + "frames": [ + [ + 0.39870987519641543, + -1.5395522261163266 + ] + ] + }, + { + "frames": [ + [ + 0.43587037995675915, + -1.5105606367932323 + ] + ] + }, + { + "frames": [ + [ + 0.46883321468713246, + -1.4791331079089922 + ] + ] + }, + { + "frames": [ + [ + 0.4972809292697634, + -1.4455723037467965 + ] + ] + }, + { + "frames": [ + [ + 0.5209395566621187, + -1.4102014331969286 + ] + ] + }, + { + "frames": [ + [ + 0.5395812513492886, + -1.3733611370784686 + ] + ] + }, + { + "frames": [ + [ + 0.5530264836208488, + -1.3354062075819917 + ] + ] + }, + { + "frames": [ + [ + 0.5611457685401126, + -1.296702171426824 + ] + ] + }, + { + "frames": [ + [ + 0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + 0.5611457685401126, + -1.218541367851012 + ] + ] + }, + { + "frames": [ + [ + 0.5530264836208488, + -1.1798373316958441 + ] + ] + }, + { + "frames": [ + [ + 0.5395812513492886, + -1.1418824021993674 + ] + ] + }, + { + "frames": [ + [ + 0.5209395566621187, + -1.1050421060809075 + ] + ] + }, + { + "frames": [ + [ + 0.4972809292697634, + -1.0696712355310394 + ] + ] + }, + { + "frames": [ + [ + 0.46883321468713246, + -1.0361104313688438 + ] + ] + }, + { + "frames": [ + [ + 0.43587037995675915, + -1.0046829024846036 + ] + ] + }, + { + "frames": [ + [ + 0.39870987519641543, + -0.9756913131615094 + ] + ] + }, + { + "frames": [ + [ + 0.3577095763809419, + -0.9494148682531574 + ] + ] + }, + { + "frames": [ + [ + 0.31326433880097443, + -0.9261066242881804 + ] + ] + }, + { + "frames": [ + [ + 0.26580219439064656, + -0.9059910523975441 + ] + ] + }, + { + "frames": [ + [ + 0.215780229546077, + -0.8892618765348449 + ] + ] + }, + { + "frames": [ + [ + 0.16368018313350652, + -0.8760802078087386 + ] + ] + }, + { + "frames": [ + [ + 0.11000380708067072, + -0.866572992894891 + ] + ] + }, + { + "frames": [ + [ + 0.055268034231450255, + -0.8608317914700941 + ] + ] + }, + { + "frames": [ + [ + 3.452652311072337e-17, + -0.8589118944425292 + ] + ] + }, + { + "frames": [ + [ + -0.055268034231450186, + -0.8608317914700941 + ] + ] + }, + { + "frames": [ + [ + -0.11000380708067065, + -0.866572992894891 + ] + ] + }, + { + "frames": [ + [ + -0.16368018313350646, + -0.8760802078087386 + ] + ] + }, + { + "frames": [ + [ + -0.21578022954607695, + -0.8892618765348449 + ] + ] + }, + { + "frames": [ + [ + -0.26580219439064656, + -0.9059910523975441 + ] + ] + }, + { + "frames": [ + [ + -0.31326433880097426, + -0.9261066242881804 + ] + ] + }, + { + "frames": [ + [ + -0.3577095763809418, + -0.949414868253157 + ] + ] + }, + { + "frames": [ + [ + -0.39870987519641543, + -0.9756913131615094 + ] + ] + }, + { + "frames": [ + [ + -0.43587037995675915, + -1.0046829024846036 + ] + ] + }, + { + "frames": [ + [ + -0.4688332146871325, + -1.0361104313688438 + ] + ] + }, + { + "frames": [ + [ + -0.4972809292697633, + -1.0696712355310394 + ] + ] + }, + { + "frames": [ + [ + -0.5209395566621187, + -1.1050421060809072 + ] + ] + }, + { + "frames": [ + [ + -0.5395812513492886, + -1.1418824021993672 + ] + ] + }, + { + "frames": [ + [ + -0.5530264836208488, + -1.179837331695844 + ] + ] + }, + { + "frames": [ + [ + -0.5611457685401126, + -1.218541367851012 + ] + ] + }, + { + "frames": [ + [ + -0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + -0.5611457685401126, + -1.296702171426824 + ] + ] + }, + { + "frames": [ + [ + -0.5530264836208488, + -1.335406207581992 + ] + ] + }, + { + "frames": [ + [ + -0.5395812513492887, + -1.3733611370784686 + ] + ] + }, + { + "frames": [ + [ + -0.5209395566621186, + -1.4102014331969286 + ] + ] + }, + { + "frames": [ + [ + -0.4972809292697634, + -1.4455723037467965 + ] + ] + }, + { + "frames": [ + [ + -0.46883321468713246, + -1.479133107908992 + ] + ] + }, + { + "frames": [ + [ + -0.43587037995675926, + -1.510560636793232 + ] + ] + }, + { + "frames": [ + [ + -0.39870987519641554, + -1.5395522261163266 + ] + ] + }, + { + "frames": [ + [ + -0.3577095763809421, + -1.5658286710246785 + ] + ] + }, + { + "frames": [ + [ + -0.3132643388009744, + -1.5891369149896557 + ] + ] + }, + { + "frames": [ + [ + -0.2658021943906467, + -1.609252486880292 + ] + ] + }, + { + "frames": [ + [ + -0.21578022954607723, + -1.6259816627429908 + ] + ] + }, + { + "frames": [ + [ + -0.16368018313350657, + -1.6391633314690972 + ] + ] + }, + { + "frames": [ + [ + -0.11000380708067092, + -1.648670546382945 + ] + ] + }, + { + "frames": [ + [ + -0.05526803423145008, + -1.6544117478077418 + ] + ] + } + ], + "direction_shift": { + "0": [ + 0, + -0.3125 + ], + "2": [ + 0.625, + 0.3125 + ], + "4": [ + 0, + 0.625 + ], + "6": [ + -0.46875, + 0.3125 + ] + } + }, + "attacking_muzzle_animation_shift": { + "rotations": [ + { + "frames": [ + [ + 3.452652311072337e-17, + -1.6563316448353067 + ] + ] + }, + { + "frames": [ + [ + 0.055268034231450255, + -1.6544117478077418 + ] + ] + }, + { + "frames": [ + [ + 0.11000380708067072, + -1.648670546382945 + ] + ] + }, + { + "frames": [ + [ + 0.16368018313350652, + -1.6391633314690972 + ] + ] + }, + { + "frames": [ + [ + 0.215780229546077, + -1.6259816627429913 + ] + ] + }, + { + "frames": [ + [ + 0.26580219439064656, + -1.609252486880292 + ] + ] + }, + { + "frames": [ + [ + 0.31326433880097443, + -1.5891369149896557 + ] + ] + }, + { + "frames": [ + [ + 0.3577095763809419, + -1.5658286710246785 + ] + ] + }, + { + "frames": [ + [ + 0.39870987519641543, + -1.5395522261163266 + ] + ] + }, + { + "frames": [ + [ + 0.43587037995675915, + -1.5105606367932323 + ] + ] + }, + { + "frames": [ + [ + 0.46883321468713246, + -1.4791331079089922 + ] + ] + }, + { + "frames": [ + [ + 0.4972809292697634, + -1.4455723037467965 + ] + ] + }, + { + "frames": [ + [ + 0.5209395566621187, + -1.4102014331969286 + ] + ] + }, + { + "frames": [ + [ + 0.5395812513492886, + -1.3733611370784686 + ] + ] + }, + { + "frames": [ + [ + 0.5530264836208488, + -1.3354062075819917 + ] + ] + }, + { + "frames": [ + [ + 0.5611457685401126, + -1.296702171426824 + ] + ] + }, + { + "frames": [ + [ + 0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + 0.5611457685401126, + -1.218541367851012 + ] + ] + }, + { + "frames": [ + [ + 0.5530264836208488, + -1.1798373316958441 + ] + ] + }, + { + "frames": [ + [ + 0.5395812513492886, + -1.1418824021993674 + ] + ] + }, + { + "frames": [ + [ + 0.5209395566621187, + -1.1050421060809075 + ] + ] + }, + { + "frames": [ + [ + 0.4972809292697634, + -1.0696712355310394 + ] + ] + }, + { + "frames": [ + [ + 0.46883321468713246, + -1.0361104313688438 + ] + ] + }, + { + "frames": [ + [ + 0.43587037995675915, + -1.0046829024846036 + ] + ] + }, + { + "frames": [ + [ + 0.39870987519641543, + -0.9756913131615094 + ] + ] + }, + { + "frames": [ + [ + 0.3577095763809419, + -0.9494148682531574 + ] + ] + }, + { + "frames": [ + [ + 0.31326433880097443, + -0.9261066242881804 + ] + ] + }, + { + "frames": [ + [ + 0.26580219439064656, + -0.9059910523975441 + ] + ] + }, + { + "frames": [ + [ + 0.215780229546077, + -0.8892618765348449 + ] + ] + }, + { + "frames": [ + [ + 0.16368018313350652, + -0.8760802078087386 + ] + ] + }, + { + "frames": [ + [ + 0.11000380708067072, + -0.866572992894891 + ] + ] + }, + { + "frames": [ + [ + 0.055268034231450255, + -0.8608317914700941 + ] + ] + }, + { + "frames": [ + [ + 3.452652311072337e-17, + -0.8589118944425292 + ] + ] + }, + { + "frames": [ + [ + -0.055268034231450186, + -0.8608317914700941 + ] + ] + }, + { + "frames": [ + [ + -0.11000380708067065, + -0.866572992894891 + ] + ] + }, + { + "frames": [ + [ + -0.16368018313350646, + -0.8760802078087386 + ] + ] + }, + { + "frames": [ + [ + -0.21578022954607695, + -0.8892618765348449 + ] + ] + }, + { + "frames": [ + [ + -0.26580219439064656, + -0.9059910523975441 + ] + ] + }, + { + "frames": [ + [ + -0.31326433880097426, + -0.9261066242881804 + ] + ] + }, + { + "frames": [ + [ + -0.3577095763809418, + -0.949414868253157 + ] + ] + }, + { + "frames": [ + [ + -0.39870987519641543, + -0.9756913131615094 + ] + ] + }, + { + "frames": [ + [ + -0.43587037995675915, + -1.0046829024846036 + ] + ] + }, + { + "frames": [ + [ + -0.4688332146871325, + -1.0361104313688438 + ] + ] + }, + { + "frames": [ + [ + -0.4972809292697633, + -1.0696712355310394 + ] + ] + }, + { + "frames": [ + [ + -0.5209395566621187, + -1.1050421060809072 + ] + ] + }, + { + "frames": [ + [ + -0.5395812513492886, + -1.1418824021993672 + ] + ] + }, + { + "frames": [ + [ + -0.5530264836208488, + -1.179837331695844 + ] + ] + }, + { + "frames": [ + [ + -0.5611457685401126, + -1.218541367851012 + ] + ] + }, + { + "frames": [ + [ + -0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + -0.5611457685401126, + -1.296702171426824 + ] + ] + }, + { + "frames": [ + [ + -0.5530264836208488, + -1.335406207581992 + ] + ] + }, + { + "frames": [ + [ + -0.5395812513492887, + -1.3733611370784686 + ] + ] + }, + { + "frames": [ + [ + -0.5209395566621186, + -1.4102014331969286 + ] + ] + }, + { + "frames": [ + [ + -0.4972809292697634, + -1.4455723037467965 + ] + ] + }, + { + "frames": [ + [ + -0.46883321468713246, + -1.479133107908992 + ] + ] + }, + { + "frames": [ + [ + -0.43587037995675926, + -1.510560636793232 + ] + ] + }, + { + "frames": [ + [ + -0.39870987519641554, + -1.5395522261163266 + ] + ] + }, + { + "frames": [ + [ + -0.3577095763809421, + -1.5658286710246785 + ] + ] + }, + { + "frames": [ + [ + -0.3132643388009744, + -1.5891369149896557 + ] + ] + }, + { + "frames": [ + [ + -0.2658021943906467, + -1.609252486880292 + ] + ] + }, + { + "frames": [ + [ + -0.21578022954607723, + -1.6259816627429908 + ] + ] + }, + { + "frames": [ + [ + -0.16368018313350657, + -1.6391633314690972 + ] + ] + }, + { + "frames": [ + [ + -0.11000380708067092, + -1.648670546382945 + ] + ] + }, + { + "frames": [ + [ + -0.05526803423145008, + -1.6544117478077418 + ] + ] + } + ], + "direction_shift": { + "0": [ + 0, + -0.3125 + ], + "2": [ + 0.625, + 0.3125 + ], + "4": [ + 0, + 0.625 + ], + "6": [ + -0.46875, + 0.3125 + ] + } + }, + "ending_attack_muzzle_animation_shift": { + "rotations": [ + { + "frames": [ + [ + 3.452652311072337e-17, + -1.6563316448353067 + ] + ] + }, + { + "frames": [ + [ + 0.055268034231450255, + -1.6544117478077418 + ] + ] + }, + { + "frames": [ + [ + 0.11000380708067072, + -1.648670546382945 + ] + ] + }, + { + "frames": [ + [ + 0.16368018313350652, + -1.6391633314690972 + ] + ] + }, + { + "frames": [ + [ + 0.215780229546077, + -1.6259816627429913 + ] + ] + }, + { + "frames": [ + [ + 0.26580219439064656, + -1.609252486880292 + ] + ] + }, + { + "frames": [ + [ + 0.31326433880097443, + -1.5891369149896557 + ] + ] + }, + { + "frames": [ + [ + 0.3577095763809419, + -1.5658286710246785 + ] + ] + }, + { + "frames": [ + [ + 0.39870987519641543, + -1.5395522261163266 + ] + ] + }, + { + "frames": [ + [ + 0.43587037995675915, + -1.5105606367932323 + ] + ] + }, + { + "frames": [ + [ + 0.46883321468713246, + -1.4791331079089922 + ] + ] + }, + { + "frames": [ + [ + 0.4972809292697634, + -1.4455723037467965 + ] + ] + }, + { + "frames": [ + [ + 0.5209395566621187, + -1.4102014331969286 + ] + ] + }, + { + "frames": [ + [ + 0.5395812513492886, + -1.3733611370784686 + ] + ] + }, + { + "frames": [ + [ + 0.5530264836208488, + -1.3354062075819917 + ] + ] + }, + { + "frames": [ + [ + 0.5611457685401126, + -1.296702171426824 + ] + ] + }, + { + "frames": [ + [ + 0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + 0.5611457685401126, + -1.218541367851012 + ] + ] + }, + { + "frames": [ + [ + 0.5530264836208488, + -1.1798373316958441 + ] + ] + }, + { + "frames": [ + [ + 0.5395812513492886, + -1.1418824021993674 + ] + ] + }, + { + "frames": [ + [ + 0.5209395566621187, + -1.1050421060809075 + ] + ] + }, + { + "frames": [ + [ + 0.4972809292697634, + -1.0696712355310394 + ] + ] + }, + { + "frames": [ + [ + 0.46883321468713246, + -1.0361104313688438 + ] + ] + }, + { + "frames": [ + [ + 0.43587037995675915, + -1.0046829024846036 + ] + ] + }, + { + "frames": [ + [ + 0.39870987519641543, + -0.9756913131615094 + ] + ] + }, + { + "frames": [ + [ + 0.3577095763809419, + -0.9494148682531574 + ] + ] + }, + { + "frames": [ + [ + 0.31326433880097443, + -0.9261066242881804 + ] + ] + }, + { + "frames": [ + [ + 0.26580219439064656, + -0.9059910523975441 + ] + ] + }, + { + "frames": [ + [ + 0.215780229546077, + -0.8892618765348449 + ] + ] + }, + { + "frames": [ + [ + 0.16368018313350652, + -0.8760802078087386 + ] + ] + }, + { + "frames": [ + [ + 0.11000380708067072, + -0.866572992894891 + ] + ] + }, + { + "frames": [ + [ + 0.055268034231450255, + -0.8608317914700941 + ] + ] + }, + { + "frames": [ + [ + 3.452652311072337e-17, + -0.8589118944425292 + ] + ] + }, + { + "frames": [ + [ + -0.055268034231450186, + -0.8608317914700941 + ] + ] + }, + { + "frames": [ + [ + -0.11000380708067065, + -0.866572992894891 + ] + ] + }, + { + "frames": [ + [ + -0.16368018313350646, + -0.8760802078087386 + ] + ] + }, + { + "frames": [ + [ + -0.21578022954607695, + -0.8892618765348449 + ] + ] + }, + { + "frames": [ + [ + -0.26580219439064656, + -0.9059910523975441 + ] + ] + }, + { + "frames": [ + [ + -0.31326433880097426, + -0.9261066242881804 + ] + ] + }, + { + "frames": [ + [ + -0.3577095763809418, + -0.949414868253157 + ] + ] + }, + { + "frames": [ + [ + -0.39870987519641543, + -0.9756913131615094 + ] + ] + }, + { + "frames": [ + [ + -0.43587037995675915, + -1.0046829024846036 + ] + ] + }, + { + "frames": [ + [ + -0.4688332146871325, + -1.0361104313688438 + ] + ] + }, + { + "frames": [ + [ + -0.4972809292697633, + -1.0696712355310394 + ] + ] + }, + { + "frames": [ + [ + -0.5209395566621187, + -1.1050421060809072 + ] + ] + }, + { + "frames": [ + [ + -0.5395812513492886, + -1.1418824021993672 + ] + ] + }, + { + "frames": [ + [ + -0.5530264836208488, + -1.179837331695844 + ] + ] + }, + { + "frames": [ + [ + -0.5611457685401126, + -1.218541367851012 + ] + ] + }, + { + "frames": [ + [ + -0.5638609129548549, + -1.257621769638918 + ] + ] + }, + { + "frames": [ + [ + -0.5611457685401126, + -1.296702171426824 + ] + ] + }, + { + "frames": [ + [ + -0.5530264836208488, + -1.335406207581992 + ] + ] + }, + { + "frames": [ + [ + -0.5395812513492887, + -1.3733611370784686 + ] + ] + }, + { + "frames": [ + [ + -0.5209395566621186, + -1.4102014331969286 + ] + ] + }, + { + "frames": [ + [ + -0.4972809292697634, + -1.4455723037467965 + ] + ] + }, + { + "frames": [ + [ + -0.46883321468713246, + -1.479133107908992 + ] + ] + }, + { + "frames": [ + [ + -0.43587037995675926, + -1.510560636793232 + ] + ] + }, + { + "frames": [ + [ + -0.39870987519641554, + -1.5395522261163266 + ] + ] + }, + { + "frames": [ + [ + -0.3577095763809421, + -1.5658286710246785 + ] + ] + }, + { + "frames": [ + [ + -0.3132643388009744, + -1.5891369149896557 + ] + ] + }, + { + "frames": [ + [ + -0.2658021943906467, + -1.609252486880292 + ] + ] + }, + { + "frames": [ + [ + -0.21578022954607723, + -1.6259816627429908 + ] + ] + }, + { + "frames": [ + [ + -0.16368018313350657, + -1.6391633314690972 + ] + ] + }, + { + "frames": [ + [ + -0.11000380708067092, + -1.648670546382945 + ] + ] + }, + { + "frames": [ + [ + -0.05526803423145008, + -1.6544117478077418 + ] + ] + } + ], + "direction_shift": { + "0": [ + 0, + -0.3125 + ], + "2": [ + 0.625, + 0.3125 + ], + "4": [ + 0, + 0.625 + ], + "6": [ + -0.46875, + 0.3125 + ] + } + }, + "folding_muzzle_animation_shift": { + "rotations": [ + { + "frames": [ + [ + 3.452652311072337e-17, + -1.6563316448353067 + ], + [ + 3.7661233871948606e-17, + -1.6611970100680988 + ], + [ + 4.067404130654696e-17, + -1.6630985883126534 + ], + [ + 4.355915825824629e-17, + -1.6620327269191726 + ], + [ + 4.631104284525516e-17, + -1.6580014732493227 + ], + [ + 4.8924409105395874e-17, + -1.6510125707435543 + ], + [ + 5.139423714965394e-17, + -1.641079444047103 + ], + [ + 5.371578280464032e-17, + -1.6282211732232355 + ], + [ + 5.588458672544502e-17, + -1.6124624571032795 + ], + [ + 5.789648296137726e-17, + -1.593833565843828 + ], + [ + 5.974760695813893e-17, + -1.5723702827822625 + ], + [ + 6.143440298106037e-17, + -1.548113835702266 + ], + [ + 6.295363094513917e-17, + -1.5211108176413644 + ], + [ + 6.430237263876306e-17, + -1.4914130973926114 + ], + [ + 6.547803732916165e-17, + -1.4590777198723306 + ] + ], + "render_layer": "object" + }, + { + "frames": [ + [ + 0.5638609129548549, + -1.257621769638918 + ], + [ + 0.6150546246994615, + -1.226287714142992 + ], + [ + 0.6642575040389737, + -1.1933976027526763 + ], + [ + 0.7113750395391369, + -1.1590146124942344 + ], + [ + 0.7563167254019478, + -1.1232047879928373 + ], + [ + 0.7989962353138709, + -1.0860369146106317 + ], + [ + 0.8393315882658836, + -1.0475823863202611 + ], + [ + 0.8772453060268373, + -1.0079150685676326 + ], + [ + 0.9126645619676474, + -0.967111156387349 + ], + [ + 0.9455213209504496, + -0.9252490280433479 + ], + [ + 0.9757524700140081, + -0.8824090944758805 + ], + [ + 1.003299939604356, + -0.83867364484402 + ], + [ + 1.0281108151177947, + -0.7941266884603916 + ], + [ + 1.0501374385420006, + -0.7488537934217412 + ], + [ + 1.0693375, + -0.7029419222453116 + ] + ] + }, + { + "frames": [ + [ + 3.452652311072337e-17, + -0.8589118944425292 + ], + [ + 3.7661233871948606e-17, + -0.791378418217885 + ], + [ + 4.067404130654696e-17, + -0.7236966171926988 + ], + [ + 4.355915825824629e-17, + -0.655996498069296 + ], + [ + 4.631104284525516e-17, + -0.5884081027363519 + ], + [ + 4.8924409105395874e-17, + -0.5210612584777091 + ], + [ + 5.139423714965394e-17, + -0.4540853285934194 + ], + [ + 5.371578280464032e-17, + -0.3876089639120295 + ], + [ + 5.588458672544502e-17, + -0.32175985567141885 + ], + [ + 5.789648296137726e-17, + -0.25666449024286786 + ], + [ + 5.974760695813893e-17, + -0.19244790616949825 + ], + [ + 6.143440298106037e-17, + -0.1292334539857739 + ], + [ + 6.295363094513917e-17, + -0.06714255927941898 + ], + [ + 6.430237263876306e-17, + -0.006294489450871084 + ], + [ + 6.547803732916165e-17, + 0.05319387538170744 + ] + ] + }, + { + "frames": [ + [ + -0.5638609129548549, + -1.257621769638918 + ], + [ + -0.6150546246994615, + -1.226287714142992 + ], + [ + -0.6642575040389737, + -1.1933976027526763 + ], + [ + -0.7113750395391369, + -1.1590146124942344 + ], + [ + -0.7563167254019478, + -1.1232047879928373 + ], + [ + -0.7989962353138709, + -1.0860369146106317 + ], + [ + -0.8393315882658836, + -1.0475823863202611 + ], + [ + -0.8772453060268373, + -1.0079150685676326 + ], + [ + -0.9126645619676474, + -0.9671111563873489 + ], + [ + -0.9455213209504496, + -0.9252490280433477 + ], + [ + -0.9757524700140081, + -0.8824090944758802 + ], + [ + -1.003299939604356, + -0.8386736448440198 + ], + [ + -1.0281108151177947, + -0.7941266884603915 + ], + [ + -1.0501374385420006, + -0.748853793421741 + ], + [ + -1.0693375, + -0.7029419222453115 + ] + ] + } + ], + "direction_shift": { + "0": [ + 0, + -0.3125 + ], + "2": [ + 0.625, + 0.3125 + ], + "4": [ + 0, + 0.625 + ], + "6": [ + -0.46875, + 0.3125 + ] + } + }, + "vehicle_impact_sound": { + "filename": "entity:sound/car-metal-impact", + "volume": 0.65 + }, + "prepare_range": 35, + "shoot_in_prepare_state": false, + "attack_parameters": { + "type": "stream", + "ammo_category": "flamethrower", + "cooldown": 4, + "range": 30, + "min_range": 6, + "turn_range": 0.3333333333333333, + "fire_penalty": 15, + "fluids": [ + { + "type": "crude-oil" + }, + { + "type": "heavy-oil", + "damage_modifier": 1.05 + }, + { + "type": "light-oil", + "damage_modifier": 1.1 + } + ], + "fluid_consumption": 0.2, + "gun_center_shift": { + "0": [ + 0, + -1.6625 + ], + "2": [ + 0.625, + -1.0375 + ], + "4": [ + 0, + -0.7250000000000001 + ], + "6": [ + -0.46875, + -1.0375 + ] + }, + "gun_barrel_length": 0.4, + "ammo_type": { + "category": "flamethrower", + "action": { + "type": "direct", + "action_delivery": { + "type": "stream", + "stream": "flamethrower-fire-stream", + "duration": 160, + "source_offset": [ + 0.15, + -0.5 + ] + } + } + }, + "cyclic_sound": { + "begin_sound": [ + { + "filename": "entity:fight/flamethrower-start", + "volume": 0.7 + } + ], + "middle_sound": [ + { + "filename": "entity:fight/flamethrower-mid", + "volume": 0.7 + } + ], + "end_sound": [ + { + "filename": "entity:fight/flamethrower-end", + "volume": 0.7 + } + ] + } + }, + "call_for_help_radius": 40, + "size": { + "width": 2, + "height": 3 + }, + "possible_rotations": [ + 0, + 2, + 4, + 6 + ] + } +} \ No newline at end of file diff --git a/src/bundles/inventoryBundle.json b/src/bundles/inventoryBundle.json new file mode 100644 index 00000000..0193d4ac --- /dev/null +++ b/src/bundles/inventoryBundle.json @@ -0,0 +1,1908 @@ +[ + { + "name": "logistics", + "icon": "icon:item-group/logistics", + "subgroups": [ + { + "name": "storage", + "items": [ + { + "name": "wooden-chest", + "icon": "icon:icons/wooden-chest" + }, + { + "name": "iron-chest", + "icon": "icon:icons/iron-chest" + }, + { + "name": "steel-chest", + "icon": "icon:icons/steel-chest" + }, + { + "name": "storage-tank", + "icon": "icon:icons/storage-tank" + } + ] + }, + { + "name": "belt", + "items": [ + { + "name": "transport-belt", + "icon": "icon:icons/transport-belt" + }, + { + "name": "fast-transport-belt", + "icon": "icon:icons/fast-transport-belt" + }, + { + "name": "express-transport-belt", + "icon": "icon:icons/express-transport-belt" + }, + { + "name": "underground-belt", + "icon": "icon:icons/underground-belt" + }, + { + "name": "fast-underground-belt", + "icon": "icon:icons/fast-underground-belt" + }, + { + "name": "express-underground-belt", + "icon": "icon:icons/express-underground-belt" + }, + { + "name": "splitter", + "icon": "icon:icons/splitter" + }, + { + "name": "fast-splitter", + "icon": "icon:icons/fast-splitter" + }, + { + "name": "express-splitter", + "icon": "icon:icons/express-splitter" + } + ] + }, + { + "name": "inserter", + "items": [ + { + "name": "burner-inserter", + "icon": "icon:icons/burner-inserter" + }, + { + "name": "inserter", + "icon": "icon:icons/inserter" + }, + { + "name": "long-handed-inserter", + "icon": "icon:icons/long-handed-inserter" + }, + { + "name": "fast-inserter", + "icon": "icon:icons/fast-inserter" + }, + { + "name": "filter-inserter", + "icon": "icon:icons/filter-inserter" + }, + { + "name": "stack-inserter", + "icon": "icon:icons/stack-inserter" + }, + { + "name": "stack-filter-inserter", + "icon": "icon:icons/stack-filter-inserter" + } + ] + }, + { + "name": "energy-pipe-distribution", + "items": [ + { + "name": "small-electric-pole", + "icon": "icon:icons/small-electric-pole" + }, + { + "name": "medium-electric-pole", + "icon": "icon:icons/medium-electric-pole" + }, + { + "name": "big-electric-pole", + "icon": "icon:icons/big-electric-pole" + }, + { + "name": "substation", + "icon": "icon:icons/substation" + }, + { + "name": "pipe", + "icon": "icon:icons/pipe" + }, + { + "name": "pipe-to-ground", + "icon": "icon:icons/pipe-to-ground" + }, + { + "name": "pump", + "icon": "icon:icons/pump" + } + ] + }, + { + "name": "transport", + "items": [ + { + "name": "rail", + "icon": "icon:icons/rail" + }, + { + "name": "train-stop", + "icon": "icon:icons/train-stop" + }, + { + "name": "rail-signal", + "icon": "icon:icons/rail-signal" + }, + { + "name": "rail-chain-signal", + "icon": "icon:icons/rail-chain-signal" + }, + { + "name": "locomotive", + "icon": "icon:icons/diesel-locomotive" + }, + { + "name": "cargo-wagon", + "icon": "icon:icons/cargo-wagon" + }, + { + "name": "fluid-wagon", + "icon": "icon:icons/fluid-wagon" + }, + { + "name": "artillery-wagon", + "icon": "icon:icons/artillery-wagon" + }, + { + "name": "car", + "icon": "icon:icons/car" + }, + { + "name": "tank", + "icon": "icon:icons/tank" + } + ] + }, + { + "name": "logistic-network", + "items": [ + { + "name": "logistic-robot", + "icon": "icon:icons/logistic-robot" + }, + { + "name": "construction-robot", + "icon": "icon:icons/construction-robot" + }, + { + "name": "logistic-chest-active-provider", + "icon": "icon:icons/logistic-chest-active-provider" + }, + { + "name": "logistic-chest-passive-provider", + "icon": "icon:icons/logistic-chest-passive-provider" + }, + { + "name": "logistic-chest-storage", + "icon": "icon:icons/logistic-chest-storage" + }, + { + "name": "logistic-chest-buffer", + "icon": "icon:icons/logistic-chest-buffer" + }, + { + "name": "logistic-chest-requester", + "icon": "icon:icons/logistic-chest-requester" + }, + { + "name": "roboport", + "icon": "icon:icons/roboport" + } + ] + }, + { + "name": "circuit-network", + "items": [ + { + "name": "small-lamp", + "icon": "icon:icons/small-lamp" + }, + { + "name": "red-wire", + "icon": "icon:icons/red-wire" + }, + { + "name": "green-wire", + "icon": "icon:icons/green-wire" + }, + { + "name": "arithmetic-combinator", + "icon": "icon:icons/arithmetic-combinator" + }, + { + "name": "decider-combinator", + "icon": "icon:icons/decider-combinator" + }, + { + "name": "constant-combinator", + "icon": "icon:icons/constant-combinator" + }, + { + "name": "power-switch", + "icon": "icon:icons/power-switch" + }, + { + "name": "programmable-speaker", + "icon": "icon:icons/programmable-speaker" + } + ] + }, + { + "name": "terrain", + "items": [ + { + "name": "stone-brick", + "icon": "icon:icons/stone-brick" + }, + { + "name": "concrete", + "icon": "icon:icons/concrete" + }, + { + "name": "hazard-concrete", + "icon": "icon:icons/hazard-concrete" + }, + { + "name": "refined-concrete", + "icon": "icon:icons/refined-concrete" + }, + { + "name": "refined-hazard-concrete", + "icon": "icon:icons/refined-hazard-concrete" + }, + { + "name": "landfill", + "icon": "icon:icons/landfill" + }, + { + "name": "cliff-explosives", + "icon": "icon:icons/cliff-explosives" + } + ] + } + ] + }, + { + "name": "production", + "icon": "icon:item-group/production", + "subgroups": [ + { + "name": "tool", + "items": [ + { + "name": "iron-axe", + "icon": "icon:icons/iron-axe" + }, + { + "name": "steel-axe", + "icon": "icon:icons/steel-axe" + }, + { + "name": "repair-pack", + "icon": "icon:icons/repair-pack" + }, + { + "name": "blueprint", + "icon": "icon:icons/blueprint" + }, + { + "name": "deconstruction-planner", + "icon": "icon:icons/deconstruction-planner" + }, + { + "name": "blueprint-book", + "icon": "icon:icons/blueprint-book" + } + ] + }, + { + "name": "energy", + "items": [ + { + "name": "boiler", + "icon": "icon:icons/boiler" + }, + { + "name": "steam-engine", + "icon": "icon:icons/steam-engine" + }, + { + "name": "steam-turbine", + "icon": "icon:icons/steam-turbine" + }, + { + "name": "solar-panel", + "icon": "icon:icons/solar-panel" + }, + { + "name": "accumulator", + "icon": "icon:icons/accumulator" + }, + { + "name": "nuclear-reactor", + "icon": "icon:icons/nuclear-reactor" + }, + { + "name": "heat-exchanger", + "icon": "icon:icons/heat-boiler" + }, + { + "name": "heat-pipe", + "icon": "icon:icons/heat-pipe" + } + ] + }, + { + "name": "extraction-machine", + "items": [ + { + "name": "burner-mining-drill", + "icon": "icon:icons/burner-mining-drill" + }, + { + "name": "electric-mining-drill", + "icon": "icon:icons/electric-mining-drill" + }, + { + "name": "offshore-pump", + "icon": "icon:icons/offshore-pump" + }, + { + "name": "pumpjack", + "icon": "icon:icons/pumpjack" + } + ] + }, + { + "name": "smelting-machine", + "items": [ + { + "name": "stone-furnace", + "icon": "icon:icons/stone-furnace" + }, + { + "name": "steel-furnace", + "icon": "icon:icons/steel-furnace" + }, + { + "name": "electric-furnace", + "icon": "icon:icons/electric-furnace" + } + ] + }, + { + "name": "production-machine", + "items": [ + { + "name": "assembling-machine-1", + "icon": "icon:icons/assembling-machine-1" + }, + { + "name": "assembling-machine-2", + "icon": "icon:icons/assembling-machine-2" + }, + { + "name": "assembling-machine-3", + "icon": "icon:icons/assembling-machine-3" + }, + { + "name": "oil-refinery", + "icon": "icon:icons/oil-refinery" + }, + { + "name": "chemical-plant", + "icon": "icon:icons/chemical-plant" + }, + { + "name": "centrifuge", + "icon": "icon:icons/centrifuge" + }, + { + "name": "lab", + "icon": "icon:icons/lab" + } + ] + }, + { + "name": "module", + "items": [ + { + "name": "beacon", + "icon": "icon:icons/beacon" + }, + { + "name": "speed-module", + "icon": "icon:icons/speed-module" + }, + { + "name": "speed-module-2", + "icon": "icon:icons/speed-module-2" + }, + { + "name": "speed-module-3", + "icon": "icon:icons/speed-module-3" + }, + { + "name": "effectivity-module", + "icon": "icon:icons/effectivity-module" + }, + { + "name": "effectivity-module-2", + "icon": "icon:icons/effectivity-module-2" + }, + { + "name": "effectivity-module-3", + "icon": "icon:icons/effectivity-module-3" + }, + { + "name": "productivity-module", + "icon": "icon:icons/productivity-module" + }, + { + "name": "productivity-module-2", + "icon": "icon:icons/productivity-module-2" + }, + { + "name": "productivity-module-3", + "icon": "icon:icons/productivity-module-3" + } + ] + } + ] + }, + { + "name": "intermediate-products", + "icon": "icon:item-group/intermediate-products", + "subgroups": [ + { + "name": "fluid-recipes", + "items": [ + { + "name": "basic-oil-processing", + "icon": "icon:fluid/basic-oil-processing" + }, + { + "name": "advanced-oil-processing", + "icon": "icon:fluid/advanced-oil-processing" + }, + { + "name": "coal-liquefaction", + "icon": "icon:fluid/coal-liquefaction" + }, + { + "name": "heavy-oil-cracking", + "icon": "icon:fluid/heavy-oil-cracking" + }, + { + "name": "light-oil-cracking", + "icon": "icon:fluid/light-oil-cracking" + }, + { + "name": "solid-fuel-from-light-oil", + "icon": "icon:icons/solid-fuel-from-light-oil" + }, + { + "name": "solid-fuel-from-petroleum-gas", + "icon": "icon:icons/solid-fuel-from-petroleum-gas" + }, + { + "name": "solid-fuel-from-heavy-oil", + "icon": "icon:icons/solid-fuel-from-heavy-oil" + } + ] + }, + { + "name": "raw-resource", + "items": [ + { + "name": "raw-wood", + "icon": "icon:icons/raw-wood" + }, + { + "name": "coal", + "icon": "icon:icons/coal" + }, + { + "name": "stone", + "icon": "icon:icons/stone" + }, + { + "name": "iron-ore", + "icon": "icon:icons/iron-ore" + }, + { + "name": "copper-ore", + "icon": "icon:icons/copper-ore" + }, + { + "name": "uranium-ore", + "icon": "icon:icons/uranium-ore" + }, + { + "name": "raw-fish", + "icon": "icon:icons/fish" + } + ] + }, + { + "name": "raw-material", + "items": [ + { + "name": "wood", + "icon": "icon:icons/wood" + }, + { + "name": "iron-plate", + "icon": "icon:icons/iron-plate" + }, + { + "name": "copper-plate", + "icon": "icon:icons/copper-plate" + }, + { + "name": "solid-fuel", + "icon": "icon:icons/solid-fuel" + }, + { + "name": "steel-plate", + "icon": "icon:icons/steel-plate" + }, + { + "name": "plastic-bar", + "icon": "icon:icons/plastic-bar" + }, + { + "name": "sulfur", + "icon": "icon:icons/sulfur" + }, + { + "name": "battery", + "icon": "icon:icons/battery" + }, + { + "name": "explosives", + "icon": "icon:icons/explosives" + }, + { + "name": "uranium-processing", + "icon": "icon:icons/uranium-processing" + } + ] + }, + { + "name": "fill-barrel", + "items": [ + { + "name": "crude-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + } + ] + }, + { + "name": "fill-crude-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/crude-oil", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "fill-heavy-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/heavy-oil", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "fill-light-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/light-oil", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "fill-lubricant-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/lubricant", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "fill-petroleum-gas-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/petroleum-gas", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "fill-sulfuric-acid-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/sulfuric-acid", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "fill-water-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/water", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ] + }, + { + "name": "heavy-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + } + ] + }, + { + "name": "light-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + } + ] + }, + { + "name": "lubricant-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + } + ] + }, + { + "name": "petroleum-gas-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + } + ] + }, + { + "name": "sulfuric-acid-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + } + ] + }, + { + "name": "water-barrel", + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + } + ] + } + ] + }, + { + "name": "empty-barrel", + "items": [ + { + "name": "empty-crude-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/crude-oil", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + }, + { + "name": "empty-heavy-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/heavy-oil", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + }, + { + "name": "empty-light-oil-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/light-oil", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + }, + { + "name": "empty-lubricant-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/lubricant", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + }, + { + "name": "empty-petroleum-gas-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/petroleum-gas", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + }, + { + "name": "empty-sulfuric-acid-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/sulfuric-acid", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + }, + { + "name": "empty-water-barrel", + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/water", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ] + } + ] + }, + { + "name": "intermediate-product", + "items": [ + { + "name": "copper-cable", + "icon": "icon:icons/copper-cable" + }, + { + "name": "iron-stick", + "icon": "icon:icons/iron-stick" + }, + { + "name": "iron-gear-wheel", + "icon": "icon:icons/iron-gear-wheel" + }, + { + "name": "empty-barrel", + "icon": "icon:barreling/empty-barrel" + }, + { + "name": "electronic-circuit", + "icon": "icon:icons/electronic-circuit" + }, + { + "name": "advanced-circuit", + "icon": "icon:icons/advanced-circuit" + }, + { + "name": "processing-unit", + "icon": "icon:icons/processing-unit" + }, + { + "name": "engine-unit", + "icon": "icon:icons/engine-unit" + }, + { + "name": "electric-engine-unit", + "icon": "icon:icons/electric-engine-unit" + }, + { + "name": "flying-robot-frame", + "icon": "icon:icons/flying-robot-frame" + }, + { + "name": "satellite", + "icon": "icon:icons/satellite" + }, + { + "name": "rocket-control-unit", + "icon": "icon:icons/rocket-control-unit" + }, + { + "name": "low-density-structure", + "icon": "icon:icons/rocket-structure" + }, + { + "name": "rocket-fuel", + "icon": "icon:icons/rocket-fuel" + }, + { + "name": "nuclear-fuel", + "icon": "icon:icons/nuclear-fuel" + }, + { + "name": "uranium-235", + "icon": "icon:icons/uranium-235" + }, + { + "name": "uranium-238", + "icon": "icon:icons/uranium-238" + }, + { + "name": "uranium-fuel-cell", + "icon": "icon:icons/uranium-fuel-cell" + }, + { + "name": "nuclear-fuel-reprocessing", + "icon": "icon:icons/nuclear-fuel-reprocessing" + }, + { + "name": "kovarex-enrichment-process", + "icon": "icon:icons/kovarex-enrichment-process" + }, + { + "name": "used-up-uranium-fuel-cell", + "icon": "icon:icons/used-up-uranium-fuel-cell" + } + ] + }, + { + "name": "science-pack", + "items": [ + { + "name": "science-pack-1", + "icon": "icon:icons/science-pack-1" + }, + { + "name": "science-pack-2", + "icon": "icon:icons/science-pack-2" + }, + { + "name": "science-pack-3", + "icon": "icon:icons/science-pack-3" + }, + { + "name": "military-science-pack", + "icon": "icon:icons/military-science-pack" + }, + { + "name": "production-science-pack", + "icon": "icon:icons/production-science-pack" + }, + { + "name": "high-tech-science-pack", + "icon": "icon:icons/high-tech-science-pack" + }, + { + "name": "space-science-pack", + "icon": "icon:icons/space-science-pack" + } + ] + } + ] + }, + { + "name": "combat", + "icon": "icon:item-group/military", + "subgroups": [ + { + "name": "gun", + "items": [ + { + "name": "pistol", + "icon": "icon:icons/pistol" + }, + { + "name": "submachine-gun", + "icon": "icon:icons/submachine-gun" + }, + { + "name": "shotgun", + "icon": "icon:icons/shotgun" + }, + { + "name": "combat-shotgun", + "icon": "icon:icons/combat-shotgun" + }, + { + "name": "rocket-launcher", + "icon": "icon:icons/rocket-launcher" + }, + { + "name": "flamethrower", + "icon": "icon:icons/flamethrower" + }, + { + "name": "land-mine", + "icon": "icon:icons/land-mine" + } + ] + }, + { + "name": "ammo", + "items": [ + { + "name": "firearm-magazine", + "icon": "icon:icons/firearm-magazine" + }, + { + "name": "piercing-rounds-magazine", + "icon": "icon:icons/piercing-rounds-magazine" + }, + { + "name": "uranium-rounds-magazine", + "icon": "icon:icons/uranium-rounds-magazine" + }, + { + "name": "shotgun-shell", + "icon": "icon:icons/shotgun-shell" + }, + { + "name": "piercing-shotgun-shell", + "icon": "icon:icons/piercing-shotgun-shell" + }, + { + "name": "cannon-shell", + "icon": "icon:icons/cannon-shell" + }, + { + "name": "explosive-cannon-shell", + "icon": "icon:icons/explosive-cannon-shell" + }, + { + "name": "uranium-cannon-shell", + "icon": "icon:icons/uranium-cannon-shell" + }, + { + "name": "explosive-uranium-cannon-shell", + "icon": "icon:icons/explosive-uranium-cannon-shell" + }, + { + "name": "artillery-shell", + "icon": "icon:icons/artillery-shell" + }, + { + "name": "rocket", + "icon": "icon:icons/rocket" + }, + { + "name": "explosive-rocket", + "icon": "icon:icons/explosive-rocket" + }, + { + "name": "atomic-bomb", + "icon": "icon:icons/atomic-bomb" + }, + { + "name": "flamethrower-ammo", + "icon": "icon:icons/flamethrower-ammo" + } + ] + }, + { + "name": "capsule", + "items": [ + { + "name": "grenade", + "icon": "icon:icons/grenade" + }, + { + "name": "cluster-grenade", + "icon": "icon:icons/cluster-grenade" + }, + { + "name": "poison-capsule", + "icon": "icon:icons/poison-capsule" + }, + { + "name": "slowdown-capsule", + "icon": "icon:icons/slowdown-capsule" + }, + { + "name": "defender-capsule", + "icon": "icon:icons/defender" + }, + { + "name": "distractor-capsule", + "icon": "icon:icons/distractor" + }, + { + "name": "destroyer-capsule", + "icon": "icon:icons/destroyer" + }, + { + "name": "discharge-defense-remote", + "icon": "icon:equipment/discharge-defense-equipment-ability" + }, + { + "name": "artillery-targeting-remote", + "icon": "icon:icons/artillery-targeting-remote" + } + ] + }, + { + "name": "armor", + "items": [ + { + "name": "light-armor", + "icon": "icon:icons/light-armor" + }, + { + "name": "heavy-armor", + "icon": "icon:icons/heavy-armor" + }, + { + "name": "modular-armor", + "icon": "icon:icons/modular-armor" + }, + { + "name": "power-armor", + "icon": "icon:icons/power-armor" + }, + { + "name": "power-armor-mk2", + "icon": "icon:icons/power-armor-mk2" + } + ] + }, + { + "name": "equipment", + "items": [ + { + "name": "solar-panel-equipment", + "icon": "icon:icons/solar-panel-equipment" + }, + { + "name": "fusion-reactor-equipment", + "icon": "icon:icons/fusion-reactor-equipment" + }, + { + "name": "energy-shield-equipment", + "icon": "icon:icons/energy-shield-equipment" + }, + { + "name": "energy-shield-mk2-equipment", + "icon": "icon:icons/energy-shield-mk2-equipment" + }, + { + "name": "battery-equipment", + "icon": "icon:icons/battery-equipment" + }, + { + "name": "battery-mk2-equipment", + "icon": "icon:icons/battery-mk2-equipment" + }, + { + "name": "personal-laser-defense-equipment", + "icon": "icon:icons/personal-laser-defense-equipment" + }, + { + "name": "discharge-defense-equipment", + "icon": "icon:icons/discharge-defense-equipment" + }, + { + "name": "exoskeleton-equipment", + "icon": "icon:icons/exoskeleton-equipment" + }, + { + "name": "personal-roboport-equipment", + "icon": "icon:icons/personal-roboport-equipment" + }, + { + "name": "personal-roboport-mk2-equipment", + "icon": "icon:icons/personal-roboport-mk2-equipment" + }, + { + "name": "night-vision-equipment", + "icon": "icon:icons/night-vision-equipment" + } + ] + }, + { + "name": "defensive-structure", + "items": [ + { + "name": "stone-wall", + "icon": "icon:icons/stone-wall" + }, + { + "name": "gate", + "icon": "icon:icons/gate" + }, + { + "name": "gun-turret", + "icon": "icon:icons/gun-turret" + }, + { + "name": "laser-turret", + "icon": "icon:icons/laser-turret" + }, + { + "name": "flamethrower-turret", + "icon": "icon:icons/flamethrower-turret" + }, + { + "name": "artillery-turret", + "icon": "icon:icons/artillery-turret" + }, + { + "name": "radar", + "icon": "icon:icons/radar" + }, + { + "name": "rocket-silo", + "icon": "icon:icons/rocket-silo" + } + ] + } + ] + }, + { + "name": "fluids", + "icon": "icon:item-group/fluids", + "subgroups": [ + { + "name": "fluid", + "items": [ + { + "name": "water", + "icon": "icon:fluid/water" + }, + { + "name": "crude-oil", + "icon": "icon:fluid/crude-oil" + }, + { + "name": "steam", + "icon": "icon:fluid/steam" + }, + { + "name": "heavy-oil", + "icon": "icon:fluid/heavy-oil" + }, + { + "name": "light-oil", + "icon": "icon:fluid/light-oil" + }, + { + "name": "petroleum-gas", + "icon": "icon:fluid/petroleum-gas" + }, + { + "name": "sulfuric-acid", + "icon": "icon:fluid/sulfuric-acid" + }, + { + "name": "lubricant", + "icon": "icon:fluid/lubricant" + } + ] + } + ] + }, + { + "name": "signals", + "icon": "icon:item-group/signals", + "subgroups": [ + { + "name": "virtual-signal-special", + "items": [ + { + "name": "signal-everything", + "icon": "icon:signal/signal_everything" + }, + { + "name": "signal-anything", + "icon": "icon:signal/signal_anything" + }, + { + "name": "signal-each", + "icon": "icon:signal/signal_each" + } + ] + }, + { + "name": "virtual-signal-number", + "items": [ + { + "name": "signal-0", + "icon": "icon:signal/signal_0" + }, + { + "name": "signal-1", + "icon": "icon:signal/signal_1" + }, + { + "name": "signal-2", + "icon": "icon:signal/signal_2" + }, + { + "name": "signal-3", + "icon": "icon:signal/signal_3" + }, + { + "name": "signal-4", + "icon": "icon:signal/signal_4" + }, + { + "name": "signal-5", + "icon": "icon:signal/signal_5" + }, + { + "name": "signal-6", + "icon": "icon:signal/signal_6" + }, + { + "name": "signal-7", + "icon": "icon:signal/signal_7" + }, + { + "name": "signal-8", + "icon": "icon:signal/signal_8" + }, + { + "name": "signal-9", + "icon": "icon:signal/signal_9" + } + ] + }, + { + "name": "virtual-signal-letter", + "items": [ + { + "name": "signal-A", + "icon": "icon:signal/signal_A" + }, + { + "name": "signal-B", + "icon": "icon:signal/signal_B" + }, + { + "name": "signal-C", + "icon": "icon:signal/signal_C" + }, + { + "name": "signal-D", + "icon": "icon:signal/signal_D" + }, + { + "name": "signal-E", + "icon": "icon:signal/signal_E" + }, + { + "name": "signal-F", + "icon": "icon:signal/signal_F" + }, + { + "name": "signal-G", + "icon": "icon:signal/signal_G" + }, + { + "name": "signal-H", + "icon": "icon:signal/signal_H" + }, + { + "name": "signal-I", + "icon": "icon:signal/signal_I" + }, + { + "name": "signal-J", + "icon": "icon:signal/signal_J" + }, + { + "name": "signal-K", + "icon": "icon:signal/signal_K" + }, + { + "name": "signal-L", + "icon": "icon:signal/signal_L" + }, + { + "name": "signal-M", + "icon": "icon:signal/signal_M" + }, + { + "name": "signal-N", + "icon": "icon:signal/signal_N" + }, + { + "name": "signal-O", + "icon": "icon:signal/signal_O" + }, + { + "name": "signal-P", + "icon": "icon:signal/signal_P" + }, + { + "name": "signal-Q", + "icon": "icon:signal/signal_Q" + }, + { + "name": "signal-R", + "icon": "icon:signal/signal_R" + }, + { + "name": "signal-S", + "icon": "icon:signal/signal_S" + }, + { + "name": "signal-T", + "icon": "icon:signal/signal_T" + }, + { + "name": "signal-U", + "icon": "icon:signal/signal_U" + }, + { + "name": "signal-V", + "icon": "icon:signal/signal_V" + }, + { + "name": "signal-W", + "icon": "icon:signal/signal_W" + }, + { + "name": "signal-X", + "icon": "icon:signal/signal_X" + }, + { + "name": "signal-Y", + "icon": "icon:signal/signal_Y" + }, + { + "name": "signal-Z", + "icon": "icon:signal/signal_Z" + } + ] + }, + { + "name": "virtual-signal-color", + "items": [ + { + "name": "signal-red", + "icon": "icon:signal/signal_red" + }, + { + "name": "signal-green", + "icon": "icon:signal/signal_green" + }, + { + "name": "signal-blue", + "icon": "icon:signal/signal_blue" + }, + { + "name": "signal-yellow", + "icon": "icon:signal/signal_yellow" + }, + { + "name": "signal-pink", + "icon": "icon:signal/signal_pink" + }, + { + "name": "signal-cyan", + "icon": "icon:signal/signal_cyan" + }, + { + "name": "signal-white", + "icon": "icon:signal/signal_white" + }, + { + "name": "signal-grey", + "icon": "icon:signal/signal_grey" + }, + { + "name": "signal-black", + "icon": "icon:signal/signal_black" + } + ] + }, + { + "name": "virtual-signal", + "items": [] + } + ] + } +] \ No newline at end of file diff --git a/src/bundles/itemBundle.json b/src/bundles/itemBundle.json new file mode 100644 index 00000000..9015513a --- /dev/null +++ b/src/bundles/itemBundle.json @@ -0,0 +1,5976 @@ +{ + "firearm-magazine": { + "type": "ammo", + "name": "firearm-magazine", + "icon": "icon:icons/firearm-magazine", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "bullet", + "action": [ + { + "type": "direct", + "action_delivery": [ + { + "type": "instant", + "source_effects": [ + { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + ], + "target_effects": [ + { + "type": "create-entity", + "entity_name": "explosion-hit" + }, + { + "type": "damage", + "damage": { + "amount": 5, + "type": "physical" + } + } + ] + } + ] + } + ] + }, + "magazine_size": 10, + "subgroup": "ammo", + "order": "a[basic-clips]-a[firearm-magazine]", + "stack_size": 200 + }, + "piercing-rounds-magazine": { + "type": "ammo", + "name": "piercing-rounds-magazine", + "icon": "icon:icons/piercing-rounds-magazine", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "bullet", + "action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "source_effects": { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + }, + "target_effects": [ + { + "type": "create-entity", + "entity_name": "explosion-hit" + }, + { + "type": "damage", + "damage": { + "amount": 8, + "type": "physical" + } + } + ] + } + } + }, + "magazine_size": 10, + "subgroup": "ammo", + "order": "a[basic-clips]-b[piercing-rounds-magazine]", + "stack_size": 200 + }, + "uranium-rounds-magazine": { + "type": "ammo", + "name": "uranium-rounds-magazine", + "icon": "icon:icons/uranium-rounds-magazine", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "bullet", + "action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "source_effects": { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + }, + "target_effects": [ + { + "type": "create-entity", + "entity_name": "explosion-hit" + }, + { + "type": "damage", + "damage": { + "amount": 24, + "type": "physical" + } + } + ] + } + } + }, + "magazine_size": 10, + "subgroup": "ammo", + "order": "a[basic-clips]-c[uranium-rounds-magazine]", + "stack_size": 200 + }, + "flamethrower-ammo": { + "type": "ammo", + "name": "flamethrower-ammo", + "icon": "icon:icons/flamethrower-ammo", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": [ + { + "source_type": "default", + "category": "flamethrower", + "target_type": "position", + "clamp_position": true, + "action": { + "type": "direct", + "action_delivery": { + "type": "stream", + "stream": "handheld-flamethrower-fire-stream", + "max_length": 15, + "duration": 160 + } + } + }, + { + "source_type": "vehicle", + "consumption_modifier": 1.125, + "category": "flamethrower", + "target_type": "position", + "clamp_position": true, + "action": { + "type": "direct", + "action_delivery": { + "type": "stream", + "stream": "tank-flamethrower-fire-stream", + "max_length": 9, + "duration": 160 + } + } + } + ], + "magazine_size": 100, + "subgroup": "ammo", + "order": "e[flamethrower]", + "stack_size": 100 + }, + "rocket": { + "type": "ammo", + "name": "rocket", + "icon": "icon:icons/rocket", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "rocket", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "rocket", + "starting_speed": 0.1, + "source_effects": { + "type": "create-entity", + "entity_name": "explosion-hit" + } + } + } + }, + "subgroup": "ammo", + "order": "d[rocket-launcher]-a[basic]", + "stack_size": 200 + }, + "explosive-rocket": { + "type": "ammo", + "name": "explosive-rocket", + "icon": "icon:icons/explosive-rocket", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "rocket", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "explosive-rocket", + "starting_speed": 0.1, + "source_effects": { + "type": "create-entity", + "entity_name": "explosion-hit" + } + } + } + }, + "subgroup": "ammo", + "order": "d[rocket-launcher]-b[explosive]", + "stack_size": 200 + }, + "atomic-bomb": { + "type": "ammo", + "name": "atomic-bomb", + "icon": "icon:icons/atomic-bomb", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "range_modifier": 3, + "cooldown_modifier": 3, + "target_type": "position", + "category": "rocket", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "atomic-rocket", + "starting_speed": 0.05, + "source_effects": { + "type": "create-entity", + "entity_name": "explosion-hit" + } + } + } + }, + "subgroup": "ammo", + "order": "d[rocket-launcher]-c[atomic-bomb]", + "stack_size": 10 + }, + "shotgun-shell": { + "type": "ammo", + "name": "shotgun-shell", + "icon": "icon:icons/shotgun-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "shotgun-shell", + "target_type": "direction", + "clamp_position": true, + "action": [ + { + "type": "direct", + "action_delivery": { + "type": "instant", + "source_effects": [ + { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + ] + } + }, + { + "type": "direct", + "repeat_count": 12, + "action_delivery": { + "type": "projectile", + "projectile": "shotgun-pellet", + "starting_speed": 1, + "direction_deviation": 0.3, + "range_deviation": 0.3, + "max_range": 15 + } + } + ] + }, + "magazine_size": 10, + "subgroup": "ammo", + "order": "b[shotgun]-a[basic]", + "stack_size": 200 + }, + "piercing-shotgun-shell": { + "type": "ammo", + "name": "piercing-shotgun-shell", + "icon": "icon:icons/piercing-shotgun-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "shotgun-shell", + "target_type": "direction", + "clamp_position": true, + "action": [ + { + "type": "direct", + "action_delivery": { + "type": "instant", + "source_effects": [ + { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + ] + } + }, + { + "type": "direct", + "repeat_count": 16, + "action_delivery": { + "type": "projectile", + "projectile": "piercing-shotgun-pellet", + "starting_speed": 1, + "direction_deviation": 0.3, + "range_deviation": 0.3, + "max_range": 15 + } + } + ] + }, + "magazine_size": 10, + "subgroup": "ammo", + "order": "b[shotgun]-b[piercing]", + "stack_size": 200 + }, + "cannon-shell": { + "type": "ammo", + "name": "cannon-shell", + "icon": "icon:icons/cannon-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "cannon-shell", + "target_type": "direction", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "cannon-projectile", + "starting_speed": 1, + "direction_deviation": 0.1, + "range_deviation": 0.1, + "max_range": 30, + "min_range": 5, + "source_effects": { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + } + } + }, + "subgroup": "ammo", + "order": "d[cannon-shell]-a[basic]", + "stack_size": 200 + }, + "explosive-cannon-shell": { + "type": "ammo", + "name": "explosive-cannon-shell", + "icon": "icon:icons/explosive-cannon-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "cannon-shell", + "target_type": "direction", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "explosive-cannon-projectile", + "starting_speed": 1, + "direction_deviation": 0.1, + "range_deviation": 0.1, + "max_range": 30, + "min_range": 5, + "source_effects": { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + } + } + }, + "subgroup": "ammo", + "order": "d[cannon-shell]-c[explosive]", + "stack_size": 200 + }, + "uranium-cannon-shell": { + "type": "ammo", + "name": "uranium-cannon-shell", + "icon": "icon:icons/uranium-cannon-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "cannon-shell", + "target_type": "direction", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "uranium-cannon-projectile", + "starting_speed": 1, + "direction_deviation": 0.1, + "range_deviation": 0.1, + "max_range": 30, + "source_effects": { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + } + } + }, + "subgroup": "ammo", + "order": "d[cannon-shell]-c[uranium]", + "stack_size": 200 + }, + "explosive-uranium-cannon-shell": { + "type": "ammo", + "name": "explosive-uranium-cannon-shell", + "icon": "icon:icons/explosive-uranium-cannon-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "cannon-shell", + "target_type": "direction", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "explosive-uranium-cannon-projectile", + "starting_speed": 1, + "direction_deviation": 0.1, + "range_deviation": 0.1, + "max_range": 30, + "source_effects": { + "type": "create-explosion", + "entity_name": "explosion-gunshot" + } + } + } + }, + "subgroup": "ammo", + "order": "d[explosive-cannon-shell]-c[uranium]", + "stack_size": 200 + }, + "artillery-shell": { + "type": "ammo", + "name": "artillery-shell", + "icon": "icon:icons/artillery-shell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "ammo_type": { + "category": "artillery-shell", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "artillery", + "projectile": "artillery-projectile", + "starting_speed": 1, + "direction_deviation": 0, + "range_deviation": 0, + "source_effects": { + "type": "create-explosion", + "entity_name": "artillery-cannon-muzzle-flash" + } + } + } + }, + "subgroup": "ammo", + "order": "d[explosive-cannon-shell]-d[artillery]", + "stack_size": 1 + }, + "light-armor": { + "type": "armor", + "name": "light-armor", + "icon": "icon:icons/light-armor", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "resistances": [ + { + "type": "physical", + "decrease": 3, + "percent": 20 + }, + { + "type": "acid", + "decrease": 0, + "percent": 10 + }, + { + "type": "explosion", + "decrease": 2, + "percent": 20 + }, + { + "type": "fire", + "decrease": 0, + "percent": 10 + } + ], + "durability": 1000, + "subgroup": "armor", + "order": "a[light-armor]", + "stack_size": 10 + }, + "heavy-armor": { + "type": "armor", + "name": "heavy-armor", + "icon": "icon:icons/heavy-armor", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "resistances": [ + { + "type": "physical", + "decrease": 6, + "percent": 30 + }, + { + "type": "explosion", + "decrease": 20, + "percent": 30 + }, + { + "type": "acid", + "decrease": 3, + "percent": 30 + }, + { + "type": "fire", + "decrease": 0, + "percent": 30 + } + ], + "durability": 5000, + "subgroup": "armor", + "order": "b[heavy-armor]", + "stack_size": 10 + }, + "modular-armor": { + "type": "armor", + "name": "modular-armor", + "icon": "icon:icons/modular-armor", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "resistances": [ + { + "type": "physical", + "decrease": 6, + "percent": 30 + }, + { + "type": "acid", + "decrease": 5, + "percent": 30 + }, + { + "type": "explosion", + "decrease": 30, + "percent": 35 + }, + { + "type": "fire", + "decrease": 0, + "percent": 40 + } + ], + "durability": 10000, + "subgroup": "armor", + "order": "c[modular-armor]", + "stack_size": 1, + "equipment_grid": "small-equipment-grid", + "inventory_size_bonus": 10 + }, + "power-armor": { + "type": "armor", + "name": "power-armor", + "icon": "icon:icons/power-armor", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "resistances": [ + { + "type": "physical", + "decrease": 8, + "percent": 30 + }, + { + "type": "acid", + "decrease": 7, + "percent": 30 + }, + { + "type": "explosion", + "decrease": 40, + "percent": 40 + }, + { + "type": "fire", + "decrease": 0, + "percent": 60 + } + ], + "durability": 15000, + "subgroup": "armor", + "order": "d[power-armor]", + "stack_size": 1, + "equipment_grid": "medium-equipment-grid", + "inventory_size_bonus": 20 + }, + "power-armor-mk2": { + "type": "armor", + "name": "power-armor-mk2", + "icon": "icon:icons/power-armor-mk2", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "resistances": [ + { + "type": "physical", + "decrease": 10, + "percent": 40 + }, + { + "type": "acid", + "decrease": 10, + "percent": 40 + }, + { + "type": "explosion", + "decrease": 60, + "percent": 50 + }, + { + "type": "fire", + "decrease": 0, + "percent": 70 + } + ], + "durability": 20000, + "subgroup": "armor", + "order": "e[power-armor-mk2]", + "stack_size": 1, + "equipment_grid": "large-equipment-grid", + "inventory_size_bonus": 30 + }, + "pistol": { + "type": "gun", + "name": "pistol", + "icon": "icon:icons/pistol", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "gun", + "order": "a[basic-clips]-a[pistol]", + "attack_parameters": { + "type": "projectile", + "ammo_category": "bullet", + "cooldown": 15, + "movement_slow_down_factor": 0.2, + "shell_particle": { + "name": "shell-particle", + "direction_deviation": 0.1, + "speed": 0.1, + "speed_deviation": 0.03, + "center": [ + 0, + 0.1 + ], + "creation_distance": -0.5, + "starting_frame_speed": 0.4, + "starting_frame_speed_deviation": 0.1 + }, + "projectile_creation_distance": 1.125, + "range": 15, + "sound": [ + { + "filename": "icon:fight/light-gunshot-1", + "volume": 0.3 + }, + { + "filename": "icon:fight/light-gunshot-2", + "volume": 0.3 + }, + { + "filename": "icon:fight/light-gunshot-3", + "volume": 0.3 + } + ] + }, + "stack_size": 5 + }, + "submachine-gun": { + "type": "gun", + "name": "submachine-gun", + "icon": "icon:icons/submachine-gun", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "gun", + "order": "a[basic-clips]-b[submachine-gun]", + "attack_parameters": { + "type": "projectile", + "ammo_category": "bullet", + "cooldown": 6, + "movement_slow_down_factor": 0.7, + "shell_particle": { + "name": "shell-particle", + "direction_deviation": 0.1, + "speed": 0.1, + "speed_deviation": 0.03, + "center": [ + 0, + 0.1 + ], + "creation_distance": -0.5, + "starting_frame_speed": 0.4, + "starting_frame_speed_deviation": 0.1 + }, + "projectile_creation_distance": 1.125, + "range": 18, + "sound": [ + { + "filename": "icon:fight/light-gunshot-1", + "volume": 0.3 + }, + { + "filename": "icon:fight/light-gunshot-2", + "volume": 0.3 + }, + { + "filename": "icon:fight/light-gunshot-3", + "volume": 0.3 + } + ] + }, + "stack_size": 5 + }, + "flamethrower": { + "type": "gun", + "name": "flamethrower", + "icon": "icon:icons/flamethrower", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "gun", + "order": "e[flamethrower]", + "attack_parameters": { + "type": "stream", + "ammo_category": "flamethrower", + "cooldown": 1, + "movement_slow_down_factor": 0.4, + "projectile_creation_distance": 0.6, + "gun_barrel_length": 0.8, + "gun_center_shift": [ + 0, + -1 + ], + "range": 15, + "min_range": 3, + "cyclic_sound": { + "begin_sound": [ + { + "filename": "icon:fight/flamethrower-start", + "volume": 0.7 + } + ], + "middle_sound": [ + { + "filename": "icon:fight/flamethrower-mid", + "volume": 0.7 + } + ], + "end_sound": [ + { + "filename": "icon:fight/flamethrower-end", + "volume": 0.7 + } + ] + } + }, + "stack_size": 5 + }, + "rocket-launcher": { + "type": "gun", + "name": "rocket-launcher", + "icon": "icon:icons/rocket-launcher", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "gun", + "order": "d[rocket-launcher]", + "attack_parameters": { + "type": "projectile", + "ammo_category": "rocket", + "movement_slow_down_factor": 0.8, + "cooldown": 60, + "projectile_creation_distance": 0.6, + "range": 22, + "projectile_center": [ + -0.17, + 0 + ], + "sound": [ + { + "filename": "icon:fight/rocket-launcher", + "volume": 0.7 + } + ] + }, + "stack_size": 5 + }, + "shotgun": { + "type": "gun", + "name": "shotgun", + "icon": "icon:icons/shotgun", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "gun", + "order": "b[shotgun]-a[basic]", + "attack_parameters": { + "type": "projectile", + "ammo_category": "shotgun-shell", + "cooldown": 60, + "movement_slow_down_factor": 0.6, + "projectile_creation_distance": 1.125, + "range": 20, + "min_range": 1, + "sound": [ + { + "filename": "icon:sound/pump-shotgun", + "volume": 0.5 + } + ] + }, + "stack_size": 5 + }, + "combat-shotgun": { + "type": "gun", + "name": "combat-shotgun", + "icon": "icon:icons/combat-shotgun", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "gun", + "order": "b[shotgun]-a[combat]", + "attack_parameters": { + "type": "projectile", + "ammo_category": "shotgun-shell", + "cooldown": 30, + "movement_slow_down_factor": 0.5, + "damage_modifier": 1.2, + "projectile_creation_distance": 1.125, + "range": 20, + "sound": [ + { + "filename": "icon:sound/pump-shotgun", + "volume": 0.5 + } + ] + }, + "stack_size": 5 + }, + "stone-brick": { + "type": "item", + "name": "stone-brick", + "icon": "icon:icons/stone-brick", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "terrain", + "order": "a[stone-brick]", + "stack_size": 100, + "place_as_tile": { + "result": "stone-path", + "condition_size": 1, + "condition": [ + "water-tile" + ] + } + }, + "raw-wood": { + "type": "item", + "name": "raw-wood", + "icon": "icon:icons/raw-wood", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "fuel_value": "4MJ", + "fuel_category": "chemical", + "subgroup": "raw-resource", + "order": "a[raw-wood]", + "stack_size": 100 + }, + "coal": { + "type": "item", + "name": "coal", + "icon": "icon:icons/coal", + "icon_size": 32, + "dark_background_icon": "icon:icons/coal-dark-background", + "flags": [ + "goes-to-main-inventory" + ], + "fuel_category": "chemical", + "fuel_value": "8MJ", + "subgroup": "raw-resource", + "order": "b[coal]", + "stack_size": 50 + }, + "stone": { + "type": "item", + "name": "stone", + "icon": "icon:icons/stone", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-resource", + "order": "d[stone]", + "stack_size": 50 + }, + "iron-ore": { + "type": "item", + "name": "iron-ore", + "icon": "icon:icons/iron-ore", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-resource", + "order": "e[iron-ore]", + "stack_size": 50 + }, + "copper-ore": { + "type": "item", + "name": "copper-ore", + "icon": "icon:icons/copper-ore", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-resource", + "order": "f[copper-ore]", + "stack_size": 50 + }, + "wood": { + "type": "item", + "name": "wood", + "icon": "icon:icons/wood", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "fuel_category": "chemical", + "fuel_value": "2MJ", + "subgroup": "raw-material", + "order": "a[wood]", + "stack_size": 50 + }, + "iron-plate": { + "type": "item", + "name": "iron-plate", + "icon": "icon:icons/iron-plate", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "b[iron-plate]", + "stack_size": 100 + }, + "copper-plate": { + "type": "item", + "name": "copper-plate", + "icon": "icon:icons/copper-plate", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "c[copper-plate]", + "stack_size": 100 + }, + "copper-cable": { + "type": "item", + "name": "copper-cable", + "icon": "icon:icons/copper-cable", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "a[copper-cable]", + "stack_size": 200 + }, + "iron-stick": { + "type": "item", + "name": "iron-stick", + "icon": "icon:icons/iron-stick", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "b[iron-stick]", + "stack_size": 100 + }, + "iron-gear-wheel": { + "type": "item", + "name": "iron-gear-wheel", + "icon": "icon:icons/iron-gear-wheel", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "c[iron-gear-wheel]", + "stack_size": 100 + }, + "electronic-circuit": { + "type": "item", + "name": "electronic-circuit", + "icon": "icon:icons/electronic-circuit", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "e[electronic-circuit]", + "stack_size": 200 + }, + "wooden-chest": { + "type": "item", + "name": "wooden-chest", + "icon": "icon:icons/wooden-chest", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "fuel_category": "chemical", + "fuel_value": "4MJ", + "subgroup": "storage", + "order": "a[items]-a[wooden-chest]", + "place_result": "wooden-chest", + "stack_size": 50 + }, + "stone-furnace": { + "type": "item", + "name": "stone-furnace", + "icon": "icon:icons/stone-furnace", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "smelting-machine", + "order": "a[stone-furnace]", + "place_result": "stone-furnace", + "stack_size": 50 + }, + "burner-mining-drill": { + "type": "item", + "name": "burner-mining-drill", + "icon": "icon:icons/burner-mining-drill", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "extraction-machine", + "order": "a[items]-a[burner-mining-drill]", + "place_result": "burner-mining-drill", + "stack_size": 50 + }, + "electric-mining-drill": { + "type": "item", + "name": "electric-mining-drill", + "icon": "icon:icons/electric-mining-drill", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "extraction-machine", + "order": "a[items]-b[electric-mining-drill]", + "place_result": "electric-mining-drill", + "stack_size": 50 + }, + "transport-belt": { + "type": "item", + "name": "transport-belt", + "icon": "icon:icons/transport-belt", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "a[transport-belt]-a[transport-belt]", + "place_result": "transport-belt", + "stack_size": 100 + }, + "burner-inserter": { + "type": "item", + "name": "burner-inserter", + "icon": "icon:icons/burner-inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "a[burner-inserter]", + "place_result": "burner-inserter", + "stack_size": 50 + }, + "inserter": { + "type": "item", + "name": "inserter", + "icon": "icon:icons/inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "b[inserter]", + "place_result": "inserter", + "stack_size": 50 + }, + "offshore-pump": { + "type": "item", + "name": "offshore-pump", + "icon": "icon:icons/offshore-pump", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "extraction-machine", + "order": "b[fluids]-a[offshore-pump]", + "place_result": "offshore-pump", + "stack_size": 20 + }, + "pipe": { + "type": "item", + "name": "pipe", + "icon": "icon:icons/pipe", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "a[pipe]-a[pipe]", + "place_result": "pipe", + "stack_size": 100 + }, + "boiler": { + "type": "item", + "name": "boiler", + "icon": "icon:icons/boiler", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "b[steam-power]-a[boiler]", + "place_result": "boiler", + "stack_size": 50 + }, + "steam-engine": { + "type": "item", + "name": "steam-engine", + "icon": "icon:icons/steam-engine", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "b[steam-power]-b[steam-engine]", + "place_result": "steam-engine", + "stack_size": 10 + }, + "small-electric-pole": { + "type": "item", + "name": "small-electric-pole", + "icon": "icon:icons/small-electric-pole", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "a[energy]-a[small-electric-pole]", + "place_result": "small-electric-pole", + "fuel_category": "chemical", + "fuel_value": "4MJ", + "stack_size": 50 + }, + "radar": { + "type": "item", + "name": "radar", + "icon": "icon:icons/radar", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "d[radar]-a[radar]", + "place_result": "radar", + "stack_size": 50 + }, + "small-lamp": { + "type": "item", + "name": "small-lamp", + "icon": "icon:icons/small-lamp", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "order": "a[light]-a[small-lamp]", + "place_result": "small-lamp", + "stack_size": 50 + }, + "pipe-to-ground": { + "type": "item", + "name": "pipe-to-ground", + "icon": "icon:icons/pipe-to-ground", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "a[pipe]-b[pipe-to-ground]", + "place_result": "pipe-to-ground", + "stack_size": 50 + }, + "assembling-machine-1": { + "type": "item", + "name": "assembling-machine-1", + "icon": "icon:icons/assembling-machine-1", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "a[assembling-machine-1]", + "place_result": "assembling-machine-1", + "stack_size": 50 + }, + "red-wire": { + "type": "item", + "name": "red-wire", + "icon": "icon:icons/red-wire", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "order": "b[wires]-a[red-wire]", + "stack_size": 200 + }, + "green-wire": { + "type": "item", + "name": "green-wire", + "icon": "icon:icons/green-wire", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "order": "b[wires]-b[green-wire]", + "stack_size": 200 + }, + "stone-wall": { + "type": "item", + "name": "stone-wall", + "icon": "icon:icons/stone-wall", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "a[stone-wall]-a[stone-wall]", + "place_result": "stone-wall", + "stack_size": 100 + }, + "gun-turret": { + "type": "item", + "name": "gun-turret", + "icon": "icon:icons/gun-turret", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "b[turret]-a[gun-turret]", + "place_result": "gun-turret", + "stack_size": 50 + }, + "solar-panel-equipment": { + "type": "item", + "name": "solar-panel-equipment", + "icon": "icon:icons/solar-panel-equipment", + "icon_size": 32, + "placed_as_equipment_result": "solar-panel-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "a[energy-source]-a[solar-panel]", + "stack_size": 20 + }, + "fusion-reactor-equipment": { + "type": "item", + "name": "fusion-reactor-equipment", + "icon": "icon:icons/fusion-reactor-equipment", + "icon_size": 32, + "placed_as_equipment_result": "fusion-reactor-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "a[energy-source]-b[fusion-reactor]", + "stack_size": 20 + }, + "energy-shield-equipment": { + "type": "item", + "name": "energy-shield-equipment", + "icon": "icon:icons/energy-shield-equipment", + "icon_size": 32, + "placed_as_equipment_result": "energy-shield-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "b[shield]-a[energy-shield-equipment]", + "stack_size": 50, + "default_request_amount": 10 + }, + "energy-shield-mk2-equipment": { + "type": "item", + "name": "energy-shield-mk2-equipment", + "localised_description": [ + "item-description.energy-shield-equipment" + ], + "icon": "icon:icons/energy-shield-mk2-equipment", + "icon_size": 32, + "placed_as_equipment_result": "energy-shield-mk2-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "b[shield]-b[energy-shield-equipment-mk2]", + "stack_size": 50, + "default_request_amount": 10 + }, + "battery-equipment": { + "type": "item", + "name": "battery-equipment", + "icon": "icon:icons/battery-equipment", + "icon_size": 32, + "placed_as_equipment_result": "battery-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "c[battery]-a[battery-equipment]", + "stack_size": 50, + "default_request_amount": 10 + }, + "battery-mk2-equipment": { + "type": "item", + "name": "battery-mk2-equipment", + "localised_description": [ + "item-description.battery-equipment" + ], + "icon": "icon:icons/battery-mk2-equipment", + "icon_size": 32, + "placed_as_equipment_result": "battery-mk2-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "c[battery]-b[battery-equipment-mk2]", + "stack_size": 50, + "default_request_amount": 10 + }, + "personal-laser-defense-equipment": { + "type": "item", + "name": "personal-laser-defense-equipment", + "icon": "icon:icons/personal-laser-defense-equipment", + "icon_size": 32, + "placed_as_equipment_result": "personal-laser-defense-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "d[active-defense]-a[personal-laser-defense-equipment]", + "stack_size": 20 + }, + "discharge-defense-equipment": { + "type": "item", + "name": "discharge-defense-equipment", + "icon": "icon:icons/discharge-defense-equipment", + "icon_size": 32, + "placed_as_equipment_result": "discharge-defense-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "d[active-defense]-b[discharge-defense-equipment]", + "stack_size": 20 + }, + "exoskeleton-equipment": { + "type": "item", + "name": "exoskeleton-equipment", + "icon": "icon:icons/exoskeleton-equipment", + "icon_size": 32, + "placed_as_equipment_result": "exoskeleton-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "e[exoskeleton]-a[exoskeleton-equipment]", + "stack_size": 10 + }, + "personal-roboport-equipment": { + "type": "item", + "name": "personal-roboport-equipment", + "icon": "icon:icons/personal-roboport-equipment", + "icon_size": 32, + "placed_as_equipment_result": "personal-roboport-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "e[robotics]-a[personal-roboport-equipment]", + "stack_size": 5 + }, + "personal-roboport-mk2-equipment": { + "type": "item", + "name": "personal-roboport-mk2-equipment", + "localised_description": [ + "item-description.personal-roboport-equipment" + ], + "icon": "icon:icons/personal-roboport-mk2-equipment", + "icon_size": 32, + "placed_as_equipment_result": "personal-roboport-mk2-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "e[robotics]-b[personal-roboport-mk2-equipment]", + "stack_size": 5 + }, + "night-vision-equipment": { + "type": "item", + "name": "night-vision-equipment", + "icon": "icon:icons/night-vision-equipment", + "icon_size": 32, + "placed_as_equipment_result": "night-vision-equipment", + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "equipment", + "order": "f[night-vision]-a[night-vision-equipment]", + "stack_size": 20 + }, + "land-mine": { + "type": "item", + "name": "land-mine", + "icon": "icon:icons/land-mine", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "damage_radius": 5, + "subgroup": "gun", + "order": "f[land-mine]", + "place_result": "land-mine", + "stack_size": 100, + "trigger_radius": 1 + }, + "iron-chest": { + "type": "item", + "name": "iron-chest", + "icon": "icon:icons/iron-chest", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "storage", + "order": "a[items]-b[iron-chest]", + "place_result": "iron-chest", + "stack_size": 50 + }, + "steel-chest": { + "type": "item", + "name": "steel-chest", + "icon": "icon:icons/steel-chest", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "storage", + "order": "a[items]-c[steel-chest]", + "place_result": "steel-chest", + "stack_size": 50 + }, + "fast-transport-belt": { + "type": "item", + "name": "fast-transport-belt", + "icon": "icon:icons/fast-transport-belt", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "a[transport-belt]-b[fast-transport-belt]", + "place_result": "fast-transport-belt", + "stack_size": 100 + }, + "express-transport-belt": { + "type": "item", + "name": "express-transport-belt", + "icon": "icon:icons/express-transport-belt", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "a[transport-belt]-c[express-transport-belt]", + "place_result": "express-transport-belt", + "stack_size": 100 + }, + "long-handed-inserter": { + "type": "item", + "name": "long-handed-inserter", + "icon": "icon:icons/long-handed-inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "c[long-handed-inserter]", + "place_result": "long-handed-inserter", + "stack_size": 50 + }, + "fast-inserter": { + "type": "item", + "name": "fast-inserter", + "icon": "icon:icons/fast-inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "d[fast-inserter]", + "place_result": "fast-inserter", + "stack_size": 50 + }, + "filter-inserter": { + "type": "item", + "name": "filter-inserter", + "icon": "icon:icons/filter-inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "e[filter-inserter]", + "place_result": "filter-inserter", + "stack_size": 50 + }, + "stack-inserter": { + "type": "item", + "name": "stack-inserter", + "icon": "icon:icons/stack-inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "f[stack-inserter]", + "place_result": "stack-inserter", + "stack_size": 50 + }, + "stack-filter-inserter": { + "type": "item", + "name": "stack-filter-inserter", + "icon": "icon:icons/stack-filter-inserter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "inserter", + "order": "g[stack-filter-inserter]", + "place_result": "stack-filter-inserter", + "stack_size": 50 + }, + "assembling-machine-2": { + "type": "item", + "name": "assembling-machine-2", + "icon": "icon:icons/assembling-machine-2", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "b[assembling-machine-2]", + "place_result": "assembling-machine-2", + "stack_size": 50 + }, + "assembling-machine-3": { + "type": "item", + "name": "assembling-machine-3", + "icon": "icon:icons/assembling-machine-3", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "c[assembling-machine-3]", + "place_result": "assembling-machine-3", + "stack_size": 50 + }, + "solar-panel": { + "type": "item", + "name": "solar-panel", + "icon": "icon:icons/solar-panel", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "d[solar-panel]-a[solar-panel]", + "place_result": "solar-panel", + "stack_size": 50 + }, + "gate": { + "type": "item", + "name": "gate", + "icon": "icon:icons/gate", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "a[wall]-b[gate]", + "place_result": "gate", + "stack_size": 50 + }, + "lab": { + "type": "item", + "name": "lab", + "icon": "icon:icons/lab", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "g[lab]", + "place_result": "lab", + "stack_size": 10 + }, + "train-stop": { + "type": "item", + "name": "train-stop", + "icon": "icon:icons/train-stop", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-c[train-stop]", + "place_result": "train-stop", + "stack_size": 10 + }, + "rail-signal": { + "type": "item", + "name": "rail-signal", + "icon": "icon:icons/rail-signal", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-d[rail-signal]", + "place_result": "rail-signal", + "stack_size": 50 + }, + "rail-chain-signal": { + "type": "item", + "name": "rail-chain-signal", + "icon": "icon:icons/rail-chain-signal", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-e[rail-signal-chain]", + "place_result": "rail-chain-signal", + "stack_size": 50 + }, + "steel-plate": { + "type": "item", + "name": "steel-plate", + "icon": "icon:icons/steel-plate", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "d[steel-plate]", + "stack_size": 100 + }, + "underground-belt": { + "type": "item", + "name": "underground-belt", + "icon": "icon:icons/underground-belt", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "b[underground-belt]-a[underground-belt]", + "place_result": "underground-belt", + "stack_size": 50 + }, + "fast-underground-belt": { + "type": "item", + "name": "fast-underground-belt", + "icon": "icon:icons/fast-underground-belt", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "b[underground-belt]-b[fast-underground-belt]", + "place_result": "fast-underground-belt", + "stack_size": 50 + }, + "express-underground-belt": { + "type": "item", + "name": "express-underground-belt", + "icon": "icon:icons/express-underground-belt", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "b[underground-belt]-c[express-underground-belt]", + "place_result": "express-underground-belt", + "stack_size": 50 + }, + "splitter": { + "type": "item", + "name": "splitter", + "icon": "icon:icons/splitter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "c[splitter]-a[splitter]", + "place_result": "splitter", + "stack_size": 50 + }, + "fast-splitter": { + "type": "item", + "name": "fast-splitter", + "icon": "icon:icons/fast-splitter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "c[splitter]-b[fast-splitter]", + "place_result": "fast-splitter", + "stack_size": 50 + }, + "express-splitter": { + "type": "item", + "name": "express-splitter", + "icon": "icon:icons/express-splitter", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "belt", + "order": "c[splitter]-c[express-splitter]", + "place_result": "express-splitter", + "stack_size": 50 + }, + "advanced-circuit": { + "type": "item", + "name": "advanced-circuit", + "icon": "icon:icons/advanced-circuit", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "f[advanced-circuit]", + "stack_size": 200 + }, + "processing-unit": { + "type": "item", + "name": "processing-unit", + "icon": "icon:icons/processing-unit", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "g[processing-unit]", + "stack_size": 100 + }, + "logistic-robot": { + "type": "item", + "name": "logistic-robot", + "icon": "icon:icons/logistic-robot", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "a[robot]-a[logistic-robot]", + "place_result": "logistic-robot", + "stack_size": 50 + }, + "construction-robot": { + "type": "item", + "name": "construction-robot", + "icon": "icon:icons/construction-robot", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "logistic-network", + "order": "a[robot]-b[construction-robot]", + "place_result": "construction-robot", + "stack_size": 50 + }, + "logistic-chest-passive-provider": { + "type": "item", + "name": "logistic-chest-passive-provider", + "icon": "icon:icons/logistic-chest-passive-provider", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "b[storage]-c[logistic-chest-passive-provider]", + "place_result": "logistic-chest-passive-provider", + "stack_size": 50 + }, + "logistic-chest-active-provider": { + "type": "item", + "name": "logistic-chest-active-provider", + "icon": "icon:icons/logistic-chest-active-provider", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "b[storage]-c[logistic-chest-active-provider]", + "place_result": "logistic-chest-active-provider", + "stack_size": 50 + }, + "logistic-chest-storage": { + "type": "item", + "name": "logistic-chest-storage", + "icon": "icon:icons/logistic-chest-storage", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "b[storage]-c[logistic-chest-storage]", + "place_result": "logistic-chest-storage", + "stack_size": 50 + }, + "logistic-chest-buffer": { + "type": "item", + "name": "logistic-chest-buffer", + "icon": "icon:icons/logistic-chest-buffer", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "b[storage]-d[logistic-chest-buffer]", + "place_result": "logistic-chest-buffer", + "stack_size": 50 + }, + "logistic-chest-requester": { + "type": "item", + "name": "logistic-chest-requester", + "icon": "icon:icons/logistic-chest-requester", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "b[storage]-e[logistic-chest-requester]", + "place_result": "logistic-chest-requester", + "stack_size": 50 + }, + "rocket-silo": { + "type": "item", + "name": "rocket-silo", + "icon": "icon:icons/rocket-silo", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "e[rocket-silo]", + "place_result": "rocket-silo", + "stack_size": 1 + }, + "roboport": { + "type": "item", + "name": "roboport", + "icon": "icon:icons/roboport", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "logistic-network", + "order": "c[signal]-a[roboport]", + "place_result": "roboport", + "stack_size": 10 + }, + "big-electric-pole": { + "type": "item", + "name": "big-electric-pole", + "icon": "icon:icons/big-electric-pole", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "a[energy]-c[big-electric-pole]", + "place_result": "big-electric-pole", + "stack_size": 50 + }, + "medium-electric-pole": { + "type": "item", + "name": "medium-electric-pole", + "icon": "icon:icons/medium-electric-pole", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "a[energy]-b[medium-electric-pole]", + "place_result": "medium-electric-pole", + "stack_size": 50 + }, + "substation": { + "type": "item", + "name": "substation", + "icon": "icon:icons/substation", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "a[energy]-d[substation]", + "place_result": "substation", + "stack_size": 50 + }, + "accumulator": { + "type": "item", + "name": "accumulator", + "icon": "icon:icons/accumulator", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "e[accumulator]-a[accumulator]", + "place_result": "accumulator", + "stack_size": 50 + }, + "steel-furnace": { + "type": "item", + "name": "steel-furnace", + "icon": "icon:icons/steel-furnace", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "smelting-machine", + "order": "b[steel-furnace]", + "place_result": "steel-furnace", + "stack_size": 50 + }, + "electric-furnace": { + "type": "item", + "name": "electric-furnace", + "icon": "icon:icons/electric-furnace", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "smelting-machine", + "order": "c[electric-furnace]", + "place_result": "electric-furnace", + "stack_size": 50 + }, + "beacon": { + "type": "item", + "name": "beacon", + "icon": "icon:icons/beacon", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "module", + "order": "a[beacon]", + "place_result": "beacon", + "stack_size": 10 + }, + "storage-tank": { + "type": "item", + "name": "storage-tank", + "icon": "icon:icons/storage-tank", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "storage", + "order": "b[fluid]-a[storage-tank]", + "place_result": "storage-tank", + "stack_size": 50 + }, + "pump": { + "type": "item", + "name": "pump", + "icon": "icon:icons/pump", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy-pipe-distribution", + "order": "b[pipe]-c[pump]", + "place_result": "pump", + "stack_size": 50 + }, + "pumpjack": { + "type": "item", + "name": "pumpjack", + "icon": "icon:icons/pumpjack", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "extraction-machine", + "order": "b[fluids]-b[pumpjack]", + "place_result": "pumpjack", + "stack_size": 20 + }, + "oil-refinery": { + "type": "item", + "name": "oil-refinery", + "icon": "icon:icons/oil-refinery", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "d[refinery]", + "place_result": "oil-refinery", + "stack_size": 10 + }, + "chemical-plant": { + "type": "item", + "name": "chemical-plant", + "icon": "icon:icons/chemical-plant", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "e[chemical-plant]", + "place_result": "chemical-plant", + "stack_size": 10 + }, + "sulfur": { + "type": "item", + "name": "sulfur", + "icon": "icon:icons/sulfur", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "g[sulfur]", + "stack_size": 50 + }, + "empty-barrel": { + "type": "item", + "name": "empty-barrel", + "icon": "icon:barreling/empty-barrel", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "d[empty-barrel]", + "stack_size": 10 + }, + "solid-fuel": { + "type": "item", + "name": "solid-fuel", + "icon": "icon:icons/solid-fuel", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "fuel_category": "chemical", + "fuel_value": "25MJ", + "fuel_acceleration_multiplier": 1.2, + "fuel_top_speed_multiplier": 1.05, + "subgroup": "raw-material", + "order": "c[solid-fuel]", + "stack_size": 50 + }, + "plastic-bar": { + "type": "item", + "name": "plastic-bar", + "icon": "icon:icons/plastic-bar", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "f[plastic-bar]", + "stack_size": 100 + }, + "engine-unit": { + "type": "item", + "name": "engine-unit", + "icon": "icon:icons/engine-unit", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "h[engine-unit]", + "stack_size": 50 + }, + "electric-engine-unit": { + "type": "item", + "name": "electric-engine-unit", + "icon": "icon:icons/electric-engine-unit", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "i[electric-engine-unit]", + "stack_size": 50 + }, + "explosives": { + "type": "item", + "name": "explosives", + "icon": "icon:icons/explosives", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "j[explosives]", + "stack_size": 50 + }, + "battery": { + "type": "item", + "name": "battery", + "icon": "icon:icons/battery", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-material", + "order": "h[battery]", + "stack_size": 200 + }, + "flying-robot-frame": { + "type": "item", + "name": "flying-robot-frame", + "icon": "icon:icons/flying-robot-frame", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "l[flying-robot-frame]", + "stack_size": 50 + }, + "arithmetic-combinator": { + "type": "item", + "name": "arithmetic-combinator", + "icon": "icon:icons/arithmetic-combinator", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "place_result": "arithmetic-combinator", + "order": "c[combinators]-a[arithmetic-combinator]", + "stack_size": 50 + }, + "decider-combinator": { + "type": "item", + "name": "decider-combinator", + "icon": "icon:icons/decider-combinator", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "place_result": "decider-combinator", + "order": "c[combinators]-b[decider-combinator]", + "stack_size": 50 + }, + "constant-combinator": { + "type": "item", + "name": "constant-combinator", + "icon": "icon:icons/constant-combinator", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "place_result": "constant-combinator", + "order": "c[combinators]-c[constant-combinator]", + "stack_size": 50 + }, + "power-switch": { + "type": "item", + "name": "power-switch", + "icon": "icon:icons/power-switch", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "place_result": "power-switch", + "order": "d[other]-a[power-switch]", + "stack_size": 50 + }, + "programmable-speaker": { + "type": "item", + "name": "programmable-speaker", + "icon": "icon:icons/programmable-speaker", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "circuit-network", + "order": "d[other]-b[programmable-speaker]", + "place_result": "programmable-speaker", + "stack_size": 50 + }, + "low-density-structure": { + "type": "item", + "name": "low-density-structure", + "icon": "icon:icons/rocket-structure", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "o[rocket-structure]", + "stack_size": 10 + }, + "rocket-fuel": { + "type": "item", + "name": "rocket-fuel", + "icon": "icon:icons/rocket-fuel", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "fuel_category": "chemical", + "fuel_value": "225MJ", + "fuel_acceleration_multiplier": 1.8, + "fuel_top_speed_multiplier": 1.15, + "subgroup": "intermediate-product", + "order": "p[rocket-fuel]", + "stack_size": 10 + }, + "nuclear-fuel": { + "type": "item", + "name": "nuclear-fuel", + "icon": "icon:icons/nuclear-fuel", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "fuel_category": "chemical", + "fuel_value": "1.21GJ", + "fuel_acceleration_multiplier": 2.5, + "fuel_top_speed_multiplier": 1.15, + "subgroup": "intermediate-product", + "order": "q[uranium-rocket-fuel]", + "stack_size": 1 + }, + "rocket-control-unit": { + "type": "item", + "name": "rocket-control-unit", + "icon": "icon:icons/rocket-control-unit", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "n[rocket-control-unit]", + "stack_size": 10 + }, + "satellite": { + "type": "item", + "name": "satellite", + "icon": "icon:icons/satellite", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "m[satellite]", + "stack_size": 1, + "rocket_launch_product": [ + "space-science-pack", + 1000 + ] + }, + "concrete": { + "type": "item", + "name": "concrete", + "icon": "icon:icons/concrete", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "terrain", + "order": "b[concrete]-a[plain]", + "stack_size": 100, + "place_as_tile": { + "result": "concrete", + "condition_size": 1, + "condition": [ + "water-tile" + ] + } + }, + "refined-concrete": { + "type": "item", + "name": "refined-concrete", + "icon": "icon:icons/refined-concrete", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "terrain", + "order": "b[concrete]-c[refined]", + "stack_size": 100, + "place_as_tile": { + "result": "refined-concrete", + "condition_size": 1, + "condition": [ + "water-tile" + ] + } + }, + "hazard-concrete": { + "type": "item", + "name": "hazard-concrete", + "icon": "icon:icons/hazard-concrete", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "terrain", + "order": "b[concrete]-b[hazard]", + "stack_size": 100, + "place_as_tile": { + "result": "hazard-concrete-left", + "condition_size": 1, + "condition": [ + "water-tile" + ] + } + }, + "refined-hazard-concrete": { + "type": "item", + "name": "refined-hazard-concrete", + "icon": "icon:icons/refined-hazard-concrete", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "terrain", + "order": "b[concrete]-d[refined-hazard]", + "stack_size": 100, + "place_as_tile": { + "result": "refined-hazard-concrete-left", + "condition_size": 1, + "condition": [ + "water-tile" + ] + } + }, + "landfill": { + "type": "item", + "name": "landfill", + "icon": "icon:icons/landfill", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "terrain", + "order": "c[landfill]-a[dirt]", + "stack_size": 100, + "place_as_tile": { + "result": "grass-1", + "condition_size": 1, + "condition": [ + "ground-tile" + ] + } + }, + "uranium-ore": { + "type": "item", + "name": "uranium-ore", + "icon": "icon:icons/uranium-ore", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "raw-resource", + "order": "g[uranium-ore]", + "stack_size": 50 + }, + "nuclear-reactor": { + "type": "item", + "name": "nuclear-reactor", + "icon": "icon:icons/nuclear-reactor", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "f[nuclear-energy]-a[reactor]", + "place_result": "nuclear-reactor", + "stack_size": 10 + }, + "uranium-235": { + "type": "item", + "name": "uranium-235", + "icon": "icon:icons/uranium-235", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "r[uranium-235]", + "stack_size": 100 + }, + "uranium-238": { + "type": "item", + "name": "uranium-238", + "icon": "icon:icons/uranium-238", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "r[uranium-238]", + "stack_size": 100 + }, + "centrifuge": { + "type": "item", + "name": "centrifuge", + "icon": "icon:icons/centrifuge", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "production-machine", + "order": "g[centrifuge]", + "place_result": "centrifuge", + "stack_size": 50 + }, + "uranium-fuel-cell": { + "type": "item", + "name": "uranium-fuel-cell", + "icon": "icon:icons/uranium-fuel-cell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "r[uranium-processing]-a[uranium-fuel-cell]", + "fuel_category": "nuclear", + "burnt_result": "used-up-uranium-fuel-cell", + "fuel_value": "8GJ", + "stack_size": 50 + }, + "used-up-uranium-fuel-cell": { + "type": "item", + "name": "used-up-uranium-fuel-cell", + "icon": "icon:icons/used-up-uranium-fuel-cell", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "intermediate-product", + "order": "r[used-up-uranium-fuel-cell]", + "stack_size": 50 + }, + "heat-exchanger": { + "type": "item", + "name": "heat-exchanger", + "icon": "icon:icons/heat-boiler", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "f[nuclear-energy]-b[heat-exchanger]", + "place_result": "heat-exchanger", + "stack_size": 50 + }, + "steam-turbine": { + "type": "item", + "name": "steam-turbine", + "icon": "icon:icons/steam-turbine", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "b[steam-power]-c[steam-turbine]", + "place_result": "steam-turbine", + "stack_size": 10 + }, + "heat-pipe": { + "type": "item", + "name": "heat-pipe", + "icon": "icon:icons/heat-pipe", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "energy", + "order": "f[nuclear-energy]-c[heat-pipe]", + "place_result": "heat-pipe", + "stack_size": 50 + }, + "laser-turret": { + "type": "item", + "name": "laser-turret", + "icon": "icon:icons/laser-turret", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "b[turret]-b[laser-turret]", + "place_result": "laser-turret", + "stack_size": 50 + }, + "flamethrower-turret": { + "type": "item", + "name": "flamethrower-turret", + "icon": "icon:icons/flamethrower-turret", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "b[turret]-c[flamethrower-turret]", + "place_result": "flamethrower-turret", + "stack_size": 50 + }, + "artillery-turret": { + "type": "item", + "name": "artillery-turret", + "icon": "icon:icons/artillery-turret", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "defensive-structure", + "order": "b[turret]-d[artillery-turret]", + "place_result": "artillery-turret", + "stack_size": 10 + }, + "water-barrel": { + "type": "item", + "name": "water-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.water" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[water-barrel]", + "stack_size": 10 + }, + "crude-oil-barrel": { + "type": "item", + "name": "crude-oil-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.crude-oil" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[crude-oil-barrel]", + "stack_size": 10 + }, + "heavy-oil-barrel": { + "type": "item", + "name": "heavy-oil-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.heavy-oil" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[heavy-oil-barrel]", + "stack_size": 10 + }, + "light-oil-barrel": { + "type": "item", + "name": "light-oil-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.light-oil" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[light-oil-barrel]", + "stack_size": 10 + }, + "petroleum-gas-barrel": { + "type": "item", + "name": "petroleum-gas-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.petroleum-gas" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[petroleum-gas-barrel]", + "stack_size": 10 + }, + "lubricant-barrel": { + "type": "item", + "name": "lubricant-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.lubricant" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[lubricant-barrel]", + "stack_size": 10 + }, + "sulfuric-acid-barrel": { + "type": "item", + "name": "sulfuric-acid-barrel", + "localised_name": [ + "item-name.filled-barrel", + [ + "fluid-name.sulfuric-acid" + ] + ], + "icons": [ + { + "icon": "icon:barreling/empty-barrel" + }, + { + "icon": "icon:barreling/barrel-side-mask", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-hoop-top-mask", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + } + ], + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "fill-barrel", + "order": "b[sulfuric-acid-barrel]", + "stack_size": 10 + }, + "raw-fish": { + "type": "capsule", + "name": "raw-fish", + "icon": "icon:icons/fish", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "raw-resource", + "capsule_action": { + "type": "use-on-self", + "attack_parameters": { + "type": "projectile", + "ammo_category": "capsule", + "cooldown": 30, + "range": 0, + "ammo_type": { + "category": "capsule", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "target_effects": { + "type": "damage", + "damage": { + "type": "physical", + "amount": -80 + } + } + } + } + } + } + }, + "order": "h[raw-fish]", + "stack_size": 100 + }, + "grenade": { + "type": "capsule", + "name": "grenade", + "icon": "icon:icons/grenade", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "grenade", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 15, + "ammo_type": { + "category": "grenade", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "grenade", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "a[grenade]-a[normal]", + "stack_size": 100 + }, + "cluster-grenade": { + "type": "capsule", + "name": "cluster-grenade", + "icon": "icon:icons/cluster-grenade", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "grenade", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 20, + "ammo_type": { + "category": "grenade", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "cluster-grenade", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "a[grenade]-b[cluster]", + "stack_size": 100 + }, + "poison-capsule": { + "type": "capsule", + "name": "poison-capsule", + "icon": "icon:icons/poison-capsule", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "capsule", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 25, + "ammo_type": { + "category": "capsule", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "poison-capsule", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "b[poison-capsule]", + "stack_size": 100 + }, + "slowdown-capsule": { + "type": "capsule", + "name": "slowdown-capsule", + "icon": "icon:icons/slowdown-capsule", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "capsule", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 25, + "ammo_type": { + "category": "capsule", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "slowdown-capsule", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "c[slowdown-capsule]", + "stack_size": 100 + }, + "defender-capsule": { + "type": "capsule", + "name": "defender-capsule", + "icon": "icon:icons/defender", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "capsule", + "cooldown": 15, + "projectile_creation_distance": 0.6, + "range": 20, + "ammo_type": { + "category": "capsule", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "defender-capsule", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "d[defender-capsule]", + "stack_size": 100 + }, + "distractor-capsule": { + "type": "capsule", + "name": "distractor-capsule", + "icon": "icon:icons/distractor", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "capsule", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 25, + "ammo_type": { + "category": "capsule", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "distractor-capsule", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "e[defender-capsule]", + "stack_size": 100 + }, + "destroyer-capsule": { + "type": "capsule", + "name": "destroyer-capsule", + "icon": "icon:icons/destroyer", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "throw", + "attack_parameters": { + "type": "projectile", + "ammo_category": "capsule", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 25, + "ammo_type": { + "category": "capsule", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "destroyer-capsule", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "capsule", + "order": "f[destroyer-capsule]", + "stack_size": 100 + }, + "discharge-defense-remote": { + "type": "capsule", + "name": "discharge-defense-remote", + "icon": "icon:equipment/discharge-defense-equipment-ability", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "equipment-remote", + "equipment": "discharge-defense-equipment" + }, + "subgroup": "capsule", + "order": "z", + "stack_size": 1 + }, + "cliff-explosives": { + "type": "capsule", + "name": "cliff-explosives", + "icon": "icon:icons/cliff-explosives", + "icon_size": 32, + "flags": [ + "goes-to-quickbar", + "hide-from-bonus-gui" + ], + "capsule_action": { + "type": "destroy-cliffs", + "radius": 1.5, + "attack_parameters": { + "type": "projectile", + "ammo_category": "grenade", + "cooldown": 30, + "projectile_creation_distance": 0.6, + "range": 10, + "ammo_type": { + "category": "grenade", + "target_type": "position", + "action": { + "type": "direct", + "action_delivery": { + "type": "projectile", + "projectile": "cliff-explosives", + "starting_speed": 0.3 + } + } + } + } + }, + "subgroup": "terrain", + "order": "d[cliff-explosives]", + "stack_size": 20 + }, + "artillery-targeting-remote": { + "type": "capsule", + "name": "artillery-targeting-remote", + "icon": "icon:icons/artillery-targeting-remote", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "capsule_action": { + "type": "artillery-remote", + "flare": "artillery-flare" + }, + "subgroup": "capsule", + "order": "zz", + "stack_size": 1 + }, + "repair-pack": { + "type": "repair-tool", + "name": "repair-pack", + "icon": "icon:icons/repair-pack", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "tool", + "order": "b[repair]-a[repair-pack]", + "speed": 2, + "durability": 300, + "stack_size": 100 + }, + "iron-axe": { + "type": "mining-tool", + "name": "iron-axe", + "localised_description": [ + "item-description.mining-tool" + ], + "icon": "icon:icons/iron-axe", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "target_effects": { + "type": "damage", + "damage": { + "amount": 5, + "type": "physical" + } + } + } + }, + "durability": 4000, + "subgroup": "tool", + "order": "a[mining]-a[iron-axe]", + "speed": 2.5, + "stack_size": 20 + }, + "steel-axe": { + "type": "mining-tool", + "name": "steel-axe", + "localised_description": [ + "item-description.mining-tool" + ], + "icon": "icon:icons/steel-axe", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "action": { + "type": "direct", + "action_delivery": { + "type": "instant", + "target_effects": { + "type": "damage", + "damage": { + "amount": 8, + "type": "physical" + } + } + } + }, + "durability": 5000, + "subgroup": "tool", + "order": "a[mining]-b[steel-axe]", + "speed": 4, + "stack_size": 20 + }, + "basic-oil-processing": { + "type": "recipe", + "name": "basic-oil-processing", + "category": "oil-processing", + "enabled": false, + "energy_required": 5, + "ingredients": [ + { + "type": "fluid", + "name": "crude-oil", + "amount": 100 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 30 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 30 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 40 + } + ], + "icon": "icon:fluid/basic-oil-processing", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "a[oil-processing]-a[basic-oil-processing]" + }, + "advanced-oil-processing": { + "type": "recipe", + "name": "advanced-oil-processing", + "category": "oil-processing", + "enabled": false, + "energy_required": 5, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 50 + }, + { + "type": "fluid", + "name": "crude-oil", + "amount": 100 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 10 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 45 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 55 + } + ], + "icon": "icon:fluid/advanced-oil-processing", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "a[oil-processing]-b[advanced-oil-processing]" + }, + "coal-liquefaction": { + "type": "recipe", + "name": "coal-liquefaction", + "category": "oil-processing", + "enabled": false, + "energy_required": 5, + "ingredients": [ + { + "type": "item", + "name": "coal", + "amount": 10 + }, + { + "type": "fluid", + "name": "heavy-oil", + "amount": 25 + }, + { + "type": "fluid", + "name": "steam", + "amount": 50 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 35 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 15 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + } + ], + "icon": "icon:fluid/coal-liquefaction", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "a[oil-processing]-c[coal-liquefaction]", + "allow_decomposition": false + }, + "heavy-oil-cracking": { + "type": "recipe", + "name": "heavy-oil-cracking", + "category": "chemistry", + "enabled": false, + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 30 + }, + { + "type": "fluid", + "name": "heavy-oil", + "amount": 40 + } + ], + "results": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 30 + } + ], + "main_product": "", + "icon": "icon:fluid/heavy-oil-cracking", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "b[fluid-chemistry]-a[heavy-oil-cracking]", + "crafting_machine_tint": { + "primary": { + "r": 0.29, + "g": 0.027, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.722, + "g": 0.465, + "b": 0.19, + "a": 0 + }, + "tertiary": { + "r": 0.87, + "g": 0.365, + "b": 0, + "a": 0 + } + } + }, + "light-oil-cracking": { + "type": "recipe", + "name": "light-oil-cracking", + "category": "chemistry", + "enabled": false, + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 30 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 30 + } + ], + "results": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + } + ], + "main_product": "", + "icon": "icon:fluid/light-oil-cracking", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "b[fluid-chemistry]-b[light-oil-cracking]", + "crafting_machine_tint": { + "primary": { + "r": 0.785, + "g": 0.406, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.795, + "g": 0.805, + "b": 0.605, + "a": 0 + }, + "tertiary": { + "r": 0.835, + "g": 0.551, + "b": 0, + "a": 0 + } + } + }, + "solid-fuel-from-light-oil": { + "type": "recipe", + "name": "solid-fuel-from-light-oil", + "category": "chemistry", + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 10 + } + ], + "results": [ + { + "type": "item", + "name": "solid-fuel", + "amount": 1 + } + ], + "icon": "icon:icons/solid-fuel-from-light-oil", + "icon_size": 32, + "subgroup": "fluid-recipes", + "enabled": false, + "order": "b[fluid-chemistry]-c[solid-fuel-from-light-oil]", + "crafting_machine_tint": { + "primary": { + "r": 0.27, + "g": 0.122, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.735, + "g": 0.546, + "b": 0.325, + "a": 0 + }, + "tertiary": { + "r": 0.61, + "g": 0.348, + "b": 0, + "a": 0 + } + } + }, + "solid-fuel-from-petroleum-gas": { + "type": "recipe", + "name": "solid-fuel-from-petroleum-gas", + "category": "chemistry", + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + } + ], + "results": [ + { + "type": "item", + "name": "solid-fuel", + "amount": 1 + } + ], + "icon": "icon:icons/solid-fuel-from-petroleum-gas", + "icon_size": 32, + "subgroup": "fluid-recipes", + "enabled": false, + "order": "b[fluid-chemistry]-d[solid-fuel-from-petroleum-gas]", + "crafting_machine_tint": { + "primary": { + "r": 0.331, + "g": 0.075, + "b": 0.51, + "a": 0 + }, + "secondary": { + "r": 0.589, + "g": 0.54, + "b": 0.615, + "a": 0.361 + }, + "tertiary": { + "r": 0.469, + "g": 0.145, + "b": 0.695, + "a": 0 + } + } + }, + "solid-fuel-from-heavy-oil": { + "type": "recipe", + "name": "solid-fuel-from-heavy-oil", + "category": "chemistry", + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 20 + } + ], + "results": [ + { + "type": "item", + "name": "solid-fuel", + "amount": 1 + } + ], + "icon": "icon:icons/solid-fuel-from-heavy-oil", + "icon_size": 32, + "subgroup": "fluid-recipes", + "enabled": false, + "order": "b[fluid-chemistry]-e[solid-fuel-from-heavy-oil]", + "crafting_machine_tint": { + "primary": { + "r": 0.16, + "g": 0.095, + "b": 0.095, + "a": 0 + }, + "secondary": { + "r": 0.47, + "g": 0.215, + "b": 0.19, + "a": 0 + }, + "tertiary": { + "r": 0.435, + "g": 0.144, + "b": 0.135, + "a": 0 + } + } + }, + "uranium-processing": { + "type": "recipe", + "name": "uranium-processing", + "energy_required": 10, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "uranium-ore", + 10 + ] + ], + "icon": "icon:icons/uranium-processing", + "icon_size": 32, + "subgroup": "raw-material", + "order": "k[uranium-processing]", + "results": [ + { + "name": "uranium-235", + "probability": 0.007, + "amount": 1 + }, + { + "name": "uranium-238", + "probability": 0.993, + "amount": 1 + } + ] + }, + "kovarex-enrichment-process": { + "type": "recipe", + "name": "kovarex-enrichment-process", + "energy_required": 50, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "uranium-235", + 40 + ], + [ + "uranium-238", + 5 + ] + ], + "icon": "icon:icons/kovarex-enrichment-process", + "icon_size": 32, + "subgroup": "intermediate-product", + "order": "r[uranium-processing]-c[kovarex-enrichment-process]", + "main_product": "", + "results": [ + { + "name": "uranium-235", + "amount": 41 + }, + { + "name": "uranium-238", + "amount": 2 + } + ], + "allow_decomposition": false + }, + "nuclear-fuel-reprocessing": { + "type": "recipe", + "name": "nuclear-fuel-reprocessing", + "energy_required": 50, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "used-up-uranium-fuel-cell", + 5 + ] + ], + "icon": "icon:icons/nuclear-fuel-reprocessing", + "icon_size": 32, + "subgroup": "intermediate-product", + "order": "r[uranium-processing]-b[nuclear-fuel-reprocessing]", + "main_product": "", + "results": [ + { + "name": "uranium-238", + "amount": 3 + } + ], + "allow_decomposition": false + }, + "fill-water-barrel": { + "type": "recipe", + "name": "fill-water-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.water" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-water-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/water", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "water-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-water-barrel": { + "type": "recipe", + "name": "empty-water-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.water" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-water-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/water", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "water-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "water", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-crude-oil-barrel": { + "type": "recipe", + "name": "fill-crude-oil-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.crude-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-crude-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/crude-oil", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "crude-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "crude-oil-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-crude-oil-barrel": { + "type": "recipe", + "name": "empty-crude-oil-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.crude-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-crude-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/crude-oil", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "crude-oil-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "crude-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-heavy-oil-barrel": { + "type": "recipe", + "name": "fill-heavy-oil-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.heavy-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-heavy-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/heavy-oil", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "heavy-oil-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-heavy-oil-barrel": { + "type": "recipe", + "name": "empty-heavy-oil-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.heavy-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-heavy-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/heavy-oil", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "heavy-oil-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-light-oil-barrel": { + "type": "recipe", + "name": "fill-light-oil-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.light-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-light-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/light-oil", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "light-oil-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-light-oil-barrel": { + "type": "recipe", + "name": "empty-light-oil-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.light-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-light-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/light-oil", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "light-oil-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-petroleum-gas-barrel": { + "type": "recipe", + "name": "fill-petroleum-gas-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.petroleum-gas" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-petroleum-gas-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/petroleum-gas", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "petroleum-gas-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-petroleum-gas-barrel": { + "type": "recipe", + "name": "empty-petroleum-gas-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.petroleum-gas" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-petroleum-gas-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/petroleum-gas", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "petroleum-gas-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-lubricant-barrel": { + "type": "recipe", + "name": "fill-lubricant-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.lubricant" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-lubricant-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/lubricant", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "lubricant", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "lubricant-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-lubricant-barrel": { + "type": "recipe", + "name": "empty-lubricant-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.lubricant" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-lubricant-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/lubricant", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "lubricant-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "lubricant", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-sulfuric-acid-barrel": { + "type": "recipe", + "name": "fill-sulfuric-acid-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.sulfuric-acid" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-sulfuric-acid-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-fill" + }, + { + "icon": "icon:barreling/barrel-fill-side-mask", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-fill-top-mask", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/sulfuric-acid", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "sulfuric-acid-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-sulfuric-acid-barrel": { + "type": "recipe", + "name": "empty-sulfuric-acid-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.sulfuric-acid" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-sulfuric-acid-barrel]", + "enabled": false, + "icons": [ + { + "icon": "icon:barreling/barrel-empty" + }, + { + "icon": "icon:barreling/barrel-empty-side-mask", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:barreling/barrel-empty-top-mask", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "icon:fluid/sulfuric-acid", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "sulfuric-acid-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "signal-everything": { + "type": "virtual-signal", + "name": "signal-everything", + "special_signal": true, + "icon": "icon:signal/signal_everything", + "icon_size": 32, + "subgroup": "virtual-signal-special", + "order": "a[special]-[1everything]" + }, + "signal-anything": { + "type": "virtual-signal", + "name": "signal-anything", + "special_signal": true, + "icon": "icon:signal/signal_anything", + "icon_size": 32, + "subgroup": "virtual-signal-special", + "order": "a[special]-[2anything]" + }, + "signal-each": { + "type": "virtual-signal", + "name": "signal-each", + "special_signal": true, + "icon": "icon:signal/signal_each", + "icon_size": 32, + "subgroup": "virtual-signal-special", + "order": "a[special]-[3each]" + }, + "signal-red": { + "type": "virtual-signal", + "name": "signal-red", + "icon": "icon:signal/signal_red", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[1red]" + }, + "signal-green": { + "type": "virtual-signal", + "name": "signal-green", + "icon": "icon:signal/signal_green", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[2green]" + }, + "signal-blue": { + "type": "virtual-signal", + "name": "signal-blue", + "icon": "icon:signal/signal_blue", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[3blue]" + }, + "signal-yellow": { + "type": "virtual-signal", + "name": "signal-yellow", + "icon": "icon:signal/signal_yellow", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[4yellow]" + }, + "signal-pink": { + "type": "virtual-signal", + "name": "signal-pink", + "icon": "icon:signal/signal_pink", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[5pink]" + }, + "signal-cyan": { + "type": "virtual-signal", + "name": "signal-cyan", + "icon": "icon:signal/signal_cyan", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[6cyan]" + }, + "signal-white": { + "type": "virtual-signal", + "name": "signal-white", + "icon": "icon:signal/signal_white", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[7white]" + }, + "signal-grey": { + "type": "virtual-signal", + "name": "signal-grey", + "icon": "icon:signal/signal_grey", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[8grey]" + }, + "signal-black": { + "type": "virtual-signal", + "name": "signal-black", + "icon": "icon:signal/signal_black", + "icon_size": 32, + "subgroup": "virtual-signal-color", + "order": "d[colors]-[9black]" + }, + "signal-1": { + "type": "virtual-signal", + "name": "signal-1", + "icon": "icon:signal/signal_1", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[1]" + }, + "signal-2": { + "type": "virtual-signal", + "name": "signal-2", + "icon": "icon:signal/signal_2", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[2]" + }, + "signal-3": { + "type": "virtual-signal", + "name": "signal-3", + "icon": "icon:signal/signal_3", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[3]" + }, + "signal-4": { + "type": "virtual-signal", + "name": "signal-4", + "icon": "icon:signal/signal_4", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[4]" + }, + "signal-5": { + "type": "virtual-signal", + "name": "signal-5", + "icon": "icon:signal/signal_5", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[5]" + }, + "signal-6": { + "type": "virtual-signal", + "name": "signal-6", + "icon": "icon:signal/signal_6", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[6]" + }, + "signal-7": { + "type": "virtual-signal", + "name": "signal-7", + "icon": "icon:signal/signal_7", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[7]" + }, + "signal-8": { + "type": "virtual-signal", + "name": "signal-8", + "icon": "icon:signal/signal_8", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[8]" + }, + "signal-9": { + "type": "virtual-signal", + "name": "signal-9", + "icon": "icon:signal/signal_9", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[9]" + }, + "signal-0": { + "type": "virtual-signal", + "name": "signal-0", + "icon": "icon:signal/signal_0", + "icon_size": 32, + "subgroup": "virtual-signal-number", + "order": "b[numbers]-[0]" + }, + "signal-A": { + "type": "virtual-signal", + "name": "signal-A", + "icon": "icon:signal/signal_A", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[A]" + }, + "signal-B": { + "type": "virtual-signal", + "name": "signal-B", + "icon": "icon:signal/signal_B", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[B]" + }, + "signal-C": { + "type": "virtual-signal", + "name": "signal-C", + "icon": "icon:signal/signal_C", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[C]" + }, + "signal-D": { + "type": "virtual-signal", + "name": "signal-D", + "icon": "icon:signal/signal_D", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[D]" + }, + "signal-E": { + "type": "virtual-signal", + "name": "signal-E", + "icon": "icon:signal/signal_E", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[E]" + }, + "signal-F": { + "type": "virtual-signal", + "name": "signal-F", + "icon": "icon:signal/signal_F", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[F]" + }, + "signal-G": { + "type": "virtual-signal", + "name": "signal-G", + "icon": "icon:signal/signal_G", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[G]" + }, + "signal-H": { + "type": "virtual-signal", + "name": "signal-H", + "icon": "icon:signal/signal_H", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[H]" + }, + "signal-I": { + "type": "virtual-signal", + "name": "signal-I", + "icon": "icon:signal/signal_I", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[I]" + }, + "signal-J": { + "type": "virtual-signal", + "name": "signal-J", + "icon": "icon:signal/signal_J", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[J]" + }, + "signal-K": { + "type": "virtual-signal", + "name": "signal-K", + "icon": "icon:signal/signal_K", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[K]" + }, + "signal-L": { + "type": "virtual-signal", + "name": "signal-L", + "icon": "icon:signal/signal_L", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[L]" + }, + "signal-M": { + "type": "virtual-signal", + "name": "signal-M", + "icon": "icon:signal/signal_M", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[M]" + }, + "signal-N": { + "type": "virtual-signal", + "name": "signal-N", + "icon": "icon:signal/signal_N", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[N]" + }, + "signal-O": { + "type": "virtual-signal", + "name": "signal-O", + "icon": "icon:signal/signal_O", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[O]" + }, + "signal-P": { + "type": "virtual-signal", + "name": "signal-P", + "icon": "icon:signal/signal_P", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[P]" + }, + "signal-Q": { + "type": "virtual-signal", + "name": "signal-Q", + "icon": "icon:signal/signal_Q", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[Q]" + }, + "signal-R": { + "type": "virtual-signal", + "name": "signal-R", + "icon": "icon:signal/signal_R", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[R]" + }, + "signal-S": { + "type": "virtual-signal", + "name": "signal-S", + "icon": "icon:signal/signal_S", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[S]" + }, + "signal-T": { + "type": "virtual-signal", + "name": "signal-T", + "icon": "icon:signal/signal_T", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[T]" + }, + "signal-U": { + "type": "virtual-signal", + "name": "signal-U", + "icon": "icon:signal/signal_U", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[U]" + }, + "signal-V": { + "type": "virtual-signal", + "name": "signal-V", + "icon": "icon:signal/signal_V", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[V]" + }, + "signal-W": { + "type": "virtual-signal", + "name": "signal-W", + "icon": "icon:signal/signal_W", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[W]" + }, + "signal-X": { + "type": "virtual-signal", + "name": "signal-X", + "icon": "icon:signal/signal_X", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[X]" + }, + "signal-Y": { + "type": "virtual-signal", + "name": "signal-Y", + "icon": "icon:signal/signal_Y", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[Y]" + }, + "signal-Z": { + "type": "virtual-signal", + "name": "signal-Z", + "icon": "icon:signal/signal_Z", + "icon_size": 32, + "subgroup": "virtual-signal-letter", + "order": "c[letters]-[Z]" + }, + "locomotive": { + "type": "item-with-entity-data", + "name": "locomotive", + "icon": "icon:icons/diesel-locomotive", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-f[diesel-locomotive]", + "place_result": "locomotive", + "stack_size": 5 + }, + "cargo-wagon": { + "type": "item-with-entity-data", + "name": "cargo-wagon", + "icon": "icon:icons/cargo-wagon", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-g[cargo-wagon]", + "place_result": "cargo-wagon", + "stack_size": 5 + }, + "fluid-wagon": { + "type": "item-with-entity-data", + "name": "fluid-wagon", + "icon": "icon:icons/fluid-wagon", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-h[fluid-wagon]", + "place_result": "fluid-wagon", + "stack_size": 5 + }, + "artillery-wagon": { + "type": "item-with-entity-data", + "name": "artillery-wagon", + "icon": "icon:icons/artillery-wagon", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-i[artillery-wagon]", + "place_result": "artillery-wagon", + "stack_size": 5 + }, + "car": { + "type": "item-with-entity-data", + "name": "car", + "icon": "icon:icons/car", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "b[personal-transport]-a[car]", + "place_result": "car", + "stack_size": 1 + }, + "tank": { + "type": "item-with-entity-data", + "name": "tank", + "icon": "icon:icons/tank", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "b[personal-transport]-b[tank]", + "place_result": "tank", + "stack_size": 1 + }, + "rail": { + "type": "rail-planner", + "name": "rail", + "icon": "icon:icons/rail", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "transport", + "order": "a[train-system]-a[rail]", + "place_result": "straight-rail", + "stack_size": 100, + "straight_rail": "straight-rail", + "curved_rail": "curved-rail" + }, + "science-pack-1": { + "type": "tool", + "name": "science-pack-1", + "localised_description": [ + "item-description.science-pack" + ], + "icon": "icon:icons/science-pack-1", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "a[science-pack-1]", + "stack_size": 200, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "science-pack-2": { + "type": "tool", + "name": "science-pack-2", + "localised_description": [ + "item-description.science-pack" + ], + "icon": "icon:icons/science-pack-2", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "b[science-pack-2]", + "stack_size": 200, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "science-pack-3": { + "type": "tool", + "name": "science-pack-3", + "localised_description": [ + "item-description.science-pack" + ], + "icon": "icon:icons/science-pack-3", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "c[science-pack-3]", + "stack_size": 200, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "military-science-pack": { + "type": "tool", + "name": "military-science-pack", + "localised_description": [ + "item-description.science-pack" + ], + "icon": "icon:icons/military-science-pack", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "d[military-science-pack]", + "stack_size": 200, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "production-science-pack": { + "type": "tool", + "name": "production-science-pack", + "localised_description": [ + "item-description.science-pack" + ], + "icon": "icon:icons/production-science-pack", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "e[production-science-pack]", + "stack_size": 200, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "high-tech-science-pack": { + "type": "tool", + "name": "high-tech-science-pack", + "localised_description": [ + "item-description.science-pack" + ], + "icon": "icon:icons/high-tech-science-pack", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "f[high-tech-science-pack]", + "stack_size": 200, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "space-science-pack": { + "type": "tool", + "name": "space-science-pack", + "icon": "icon:icons/space-science-pack", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "science-pack", + "order": "g[space-science-pack]", + "stack_size": 2000, + "durability": 1, + "durability_description_key": "description.science-pack-remaining-amount-key", + "durability_description_value": "description.science-pack-remaining-amount-value" + }, + "blueprint": { + "type": "blueprint", + "name": "blueprint", + "icon": "icon:icons/blueprint", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "tool", + "order": "c[automated-construction]-a[blueprint]", + "stack_size": 1, + "stackable": false, + "draw_label_for_cursor_render": true, + "item_to_clear": "electronic-circuit", + "selection_color": { + "r": 0, + "g": 1, + "b": 0 + }, + "alt_selection_color": { + "r": 0, + "g": 1, + "b": 0 + }, + "selection_mode": [ + "blueprint" + ], + "alt_selection_mode": [ + "blueprint" + ], + "selection_cursor_box_type": "copy", + "alt_selection_cursor_box_type": "copy" + }, + "deconstruction-planner": { + "type": "deconstruction-item", + "name": "deconstruction-planner", + "icon": "icon:icons/deconstruction-planner", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "tool", + "order": "c[automated-construction]-b[deconstruction-planner]", + "stack_size": 1, + "entity_filter_count": 30, + "tile_filter_count": 30, + "selection_color": { + "r": 1, + "g": 0, + "b": 0 + }, + "alt_selection_color": { + "r": 0, + "g": 0, + "b": 1 + }, + "selection_mode": [ + "deconstruct" + ], + "alt_selection_mode": [ + "cancel-deconstruct" + ], + "selection_cursor_box_type": "not-allowed", + "alt_selection_cursor_box_type": "not-allowed" + }, + "blueprint-book": { + "type": "blueprint-book", + "name": "blueprint-book", + "icon": "icon:icons/blueprint-book", + "icon_size": 32, + "flags": [ + "goes-to-quickbar" + ], + "subgroup": "tool", + "order": "c[automated-construction]-c[blueprint-book]", + "stack_size": 1, + "inventory_size": 1000 + }, + "speed-module": { + "type": "module", + "name": "speed-module", + "localised_description": [ + "item-description.speed-module" + ], + "icon": "icon:icons/speed-module", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "speed", + "tier": 1, + "order": "a[speed]-a[speed-module-1]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "speed": { + "bonus": 0.2 + }, + "consumption": { + "bonus": 0.5 + } + } + }, + "speed-module-2": { + "type": "module", + "name": "speed-module-2", + "localised_description": [ + "item-description.speed-module" + ], + "icon": "icon:icons/speed-module-2", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "speed", + "tier": 2, + "order": "a[speed]-b[speed-module-2]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "speed": { + "bonus": 0.3 + }, + "consumption": { + "bonus": 0.6 + } + } + }, + "speed-module-3": { + "type": "module", + "name": "speed-module-3", + "localised_description": [ + "item-description.speed-module" + ], + "icon": "icon:icons/speed-module-3", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "speed", + "tier": 3, + "order": "a[speed]-c[speed-module-3]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "speed": { + "bonus": 0.5 + }, + "consumption": { + "bonus": 0.7 + } + } + }, + "effectivity-module": { + "type": "module", + "name": "effectivity-module", + "localised_description": [ + "item-description.effectivity-module" + ], + "icon": "icon:icons/effectivity-module", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "effectivity", + "tier": 1, + "order": "c[effectivity]-a[effectivity-module-1]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "consumption": { + "bonus": -0.3 + } + } + }, + "effectivity-module-2": { + "type": "module", + "name": "effectivity-module-2", + "localised_description": [ + "item-description.effectivity-module" + ], + "icon": "icon:icons/effectivity-module-2", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "effectivity", + "tier": 2, + "order": "c[effectivity]-b[effectivity-module-2]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "consumption": { + "bonus": -0.4 + } + } + }, + "effectivity-module-3": { + "type": "module", + "name": "effectivity-module-3", + "localised_description": [ + "item-description.effectivity-module" + ], + "icon": "icon:icons/effectivity-module-3", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "effectivity", + "tier": 3, + "order": "c[effectivity]-c[effectivity-module-3]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "consumption": { + "bonus": -0.5 + } + } + }, + "productivity-module": { + "type": "module", + "name": "productivity-module", + "localised_description": [ + "item-description.productivity-module" + ], + "icon": "icon:icons/productivity-module", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "productivity", + "tier": 1, + "order": "c[productivity]-a[productivity-module-1]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "productivity": { + "bonus": 0.04 + }, + "consumption": { + "bonus": 0.4 + }, + "pollution": { + "bonus": 0.05 + }, + "speed": { + "bonus": -0.15 + } + }, + "limitation": [ + "sulfuric-acid", + "basic-oil-processing", + "advanced-oil-processing", + "coal-liquefaction", + "heavy-oil-cracking", + "light-oil-cracking", + "solid-fuel-from-light-oil", + "solid-fuel-from-heavy-oil", + "solid-fuel-from-petroleum-gas", + "lubricant", + "wood", + "iron-plate", + "copper-plate", + "steel-plate", + "stone-brick", + "sulfur", + "plastic-bar", + "empty-barrel", + "uranium-processing", + "copper-cable", + "iron-stick", + "iron-gear-wheel", + "electronic-circuit", + "advanced-circuit", + "processing-unit", + "engine-unit", + "electric-engine-unit", + "uranium-fuel-cell", + "explosives", + "battery", + "flying-robot-frame", + "low-density-structure", + "rocket-fuel", + "rocket-control-unit", + "rocket-part", + "science-pack-1", + "science-pack-2", + "science-pack-3", + "military-science-pack", + "production-science-pack", + "high-tech-science-pack" + ], + "limitation_message_key": "production-module-usable-only-on-intermediates" + }, + "productivity-module-2": { + "type": "module", + "name": "productivity-module-2", + "localised_description": [ + "item-description.productivity-module" + ], + "icon": "icon:icons/productivity-module-2", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "productivity", + "tier": 2, + "order": "c[productivity]-b[productivity-module-2]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "productivity": { + "bonus": 0.06 + }, + "consumption": { + "bonus": 0.6 + }, + "pollution": { + "bonus": 0.075 + }, + "speed": { + "bonus": -0.15 + } + }, + "limitation": [ + "sulfuric-acid", + "basic-oil-processing", + "advanced-oil-processing", + "coal-liquefaction", + "heavy-oil-cracking", + "light-oil-cracking", + "solid-fuel-from-light-oil", + "solid-fuel-from-heavy-oil", + "solid-fuel-from-petroleum-gas", + "lubricant", + "wood", + "iron-plate", + "copper-plate", + "steel-plate", + "stone-brick", + "sulfur", + "plastic-bar", + "empty-barrel", + "uranium-processing", + "copper-cable", + "iron-stick", + "iron-gear-wheel", + "electronic-circuit", + "advanced-circuit", + "processing-unit", + "engine-unit", + "electric-engine-unit", + "uranium-fuel-cell", + "explosives", + "battery", + "flying-robot-frame", + "low-density-structure", + "rocket-fuel", + "rocket-control-unit", + "rocket-part", + "science-pack-1", + "science-pack-2", + "science-pack-3", + "military-science-pack", + "production-science-pack", + "high-tech-science-pack" + ], + "limitation_message_key": "production-module-usable-only-on-intermediates" + }, + "productivity-module-3": { + "type": "module", + "name": "productivity-module-3", + "localised_description": [ + "item-description.productivity-module" + ], + "icon": "icon:icons/productivity-module-3", + "icon_size": 32, + "flags": [ + "goes-to-main-inventory" + ], + "subgroup": "module", + "category": "productivity", + "tier": 3, + "order": "c[productivity]-c[productivity-module-3]", + "stack_size": 50, + "default_request_amount": 10, + "effect": { + "productivity": { + "bonus": 0.1 + }, + "consumption": { + "bonus": 0.8 + }, + "pollution": { + "bonus": 0.1 + }, + "speed": { + "bonus": -0.15 + } + }, + "limitation": [ + "sulfuric-acid", + "basic-oil-processing", + "advanced-oil-processing", + "coal-liquefaction", + "heavy-oil-cracking", + "light-oil-cracking", + "solid-fuel-from-light-oil", + "solid-fuel-from-heavy-oil", + "solid-fuel-from-petroleum-gas", + "lubricant", + "wood", + "iron-plate", + "copper-plate", + "steel-plate", + "stone-brick", + "sulfur", + "plastic-bar", + "empty-barrel", + "uranium-processing", + "copper-cable", + "iron-stick", + "iron-gear-wheel", + "electronic-circuit", + "advanced-circuit", + "processing-unit", + "engine-unit", + "electric-engine-unit", + "uranium-fuel-cell", + "explosives", + "battery", + "flying-robot-frame", + "low-density-structure", + "rocket-fuel", + "rocket-control-unit", + "rocket-part", + "science-pack-1", + "science-pack-2", + "science-pack-3", + "military-science-pack", + "production-science-pack", + "high-tech-science-pack" + ], + "limitation_message_key": "production-module-usable-only-on-intermediates" + }, + "water": { + "type": "fluid", + "name": "water", + "default_temperature": 15, + "max_temperature": 100, + "heat_capacity": "0.2KJ", + "base_color": { + "r": 0, + "g": 0.34, + "b": 0.6 + }, + "flow_color": { + "r": 0.7, + "g": 0.7, + "b": 0.7 + }, + "icon": "icon:fluid/water", + "icon_size": 32, + "order": "a[fluid]-a[water]", + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "subgroup": "fluid" + }, + "steam": { + "type": "fluid", + "name": "steam", + "default_temperature": 15, + "max_temperature": 1000, + "heat_capacity": "0.2KJ", + "icon": "icon:fluid/steam", + "icon_size": 32, + "base_color": { + "r": 0.5, + "g": 0.5, + "b": 0.5 + }, + "flow_color": { + "r": 1, + "g": 1, + "b": 1 + }, + "order": "a[fluid]-b[steam]", + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "gas_temperature": 15, + "auto_barrel": false, + "subgroup": "fluid" + }, + "crude-oil": { + "type": "fluid", + "name": "crude-oil", + "default_temperature": 25, + "heat_capacity": "0.1KJ", + "base_color": { + "r": 0, + "g": 0, + "b": 0 + }, + "flow_color": { + "r": 0.5, + "g": 0.5, + "b": 0.5 + }, + "max_temperature": 100, + "icon": "icon:fluid/crude-oil", + "icon_size": 32, + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "order": "a[fluid]-b[crude-oil]", + "subgroup": "fluid" + }, + "heavy-oil": { + "type": "fluid", + "name": "heavy-oil", + "default_temperature": 25, + "heat_capacity": "0.1KJ", + "base_color": { + "r": 0.5, + "g": 0.04, + "b": 0 + }, + "flow_color": { + "r": 0.85, + "g": 0.6, + "b": 0.3 + }, + "max_temperature": 100, + "icon": "icon:fluid/heavy-oil", + "icon_size": 32, + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "order": "a[fluid]-c[heavy-oil]", + "subgroup": "fluid" + }, + "light-oil": { + "type": "fluid", + "name": "light-oil", + "default_temperature": 25, + "heat_capacity": "0.1KJ", + "base_color": { + "r": 0.57, + "g": 0.33, + "b": 0 + }, + "flow_color": { + "r": 1, + "g": 0.73, + "b": 0.07 + }, + "max_temperature": 100, + "icon": "icon:fluid/light-oil", + "icon_size": 32, + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "order": "a[fluid]-d[light-oil]", + "subgroup": "fluid" + }, + "petroleum-gas": { + "type": "fluid", + "name": "petroleum-gas", + "default_temperature": 25, + "heat_capacity": "0.1KJ", + "base_color": { + "r": 0.3, + "g": 0.1, + "b": 0.3 + }, + "flow_color": { + "r": 0.8, + "g": 0.8, + "b": 0.8 + }, + "max_temperature": 100, + "icon": "icon:fluid/petroleum-gas", + "icon_size": 32, + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "order": "a[fluid]-e[petroleum-gas]", + "subgroup": "fluid" + }, + "lubricant": { + "type": "fluid", + "name": "lubricant", + "default_temperature": 25, + "heat_capacity": "0.1KJ", + "base_color": { + "r": 0.15, + "g": 0.32, + "b": 0.03 + }, + "flow_color": { + "r": 0.43, + "g": 0.75, + "b": 0.31 + }, + "max_temperature": 100, + "icon": "icon:fluid/lubricant", + "icon_size": 32, + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "order": "e[lubricant]", + "subgroup": "fluid" + }, + "sulfuric-acid": { + "type": "fluid", + "name": "sulfuric-acid", + "default_temperature": 25, + "heat_capacity": "0.1KJ", + "base_color": { + "r": 0.75, + "g": 0.65, + "b": 0.1 + }, + "flow_color": { + "r": 0.7, + "g": 1, + "b": 0.1 + }, + "max_temperature": 100, + "icon": "icon:fluid/sulfuric-acid", + "icon_size": 32, + "pressure_to_speed_ratio": 0.4, + "flow_to_energy_ratio": 0.59, + "order": "a[fluid]-f[sulfuric-acid]", + "subgroup": "fluid" + } +} \ No newline at end of file diff --git a/src/bundles/recipeBundle.json b/src/bundles/recipeBundle.json new file mode 100644 index 00000000..7e4c1012 --- /dev/null +++ b/src/bundles/recipeBundle.json @@ -0,0 +1,5615 @@ +{ + "copper-plate": { + "type": "recipe", + "name": "copper-plate", + "category": "smelting", + "energy_required": 3.5, + "ingredients": [ + [ + "copper-ore", + 1 + ] + ], + "result": "copper-plate" + }, + "iron-plate": { + "type": "recipe", + "name": "iron-plate", + "category": "smelting", + "energy_required": 3.5, + "ingredients": [ + [ + "iron-ore", + 1 + ] + ], + "result": "iron-plate" + }, + "stone-brick": { + "type": "recipe", + "name": "stone-brick", + "category": "smelting", + "energy_required": 3.5, + "enabled": true, + "ingredients": [ + [ + "stone", + 2 + ] + ], + "result": "stone-brick" + }, + "wood": { + "type": "recipe", + "name": "wood", + "ingredients": [ + [ + "raw-wood", + 1 + ] + ], + "result": "wood", + "result_count": 2 + }, + "wooden-chest": { + "type": "recipe", + "name": "wooden-chest", + "ingredients": [ + [ + "wood", + 4 + ] + ], + "result": "wooden-chest" + }, + "iron-stick": { + "type": "recipe", + "name": "iron-stick", + "ingredients": [ + [ + "iron-plate", + 1 + ] + ], + "result": "iron-stick", + "result_count": 2 + }, + "iron-axe": { + "type": "recipe", + "name": "iron-axe", + "ingredients": [ + [ + "iron-stick", + 2 + ], + [ + "iron-plate", + 3 + ] + ], + "result": "iron-axe" + }, + "stone-furnace": { + "type": "recipe", + "name": "stone-furnace", + "ingredients": [ + [ + "stone", + 5 + ] + ], + "result": "stone-furnace" + }, + "boiler": { + "type": "recipe", + "name": "boiler", + "ingredients": [ + [ + "stone-furnace", + 1 + ], + [ + "pipe", + 4 + ] + ], + "result": "boiler" + }, + "steam-engine": { + "type": "recipe", + "name": "steam-engine", + "normal": { + "ingredients": [ + [ + "iron-gear-wheel", + 8 + ], + [ + "pipe", + 5 + ], + [ + "iron-plate", + 10 + ] + ], + "result": "steam-engine" + }, + "expensive": { + "ingredients": [ + [ + "iron-gear-wheel", + 10 + ], + [ + "pipe", + 5 + ], + [ + "iron-plate", + 50 + ] + ], + "result": "steam-engine" + } + }, + "iron-gear-wheel": { + "type": "recipe", + "name": "iron-gear-wheel", + "normal": { + "ingredients": [ + [ + "iron-plate", + 2 + ] + ], + "result": "iron-gear-wheel" + }, + "expensive": { + "ingredients": [ + [ + "iron-plate", + 4 + ] + ], + "result": "iron-gear-wheel" + } + }, + "electronic-circuit": { + "type": "recipe", + "name": "electronic-circuit", + "normal": { + "ingredients": [ + [ + "iron-plate", + 1 + ], + [ + "copper-cable", + 3 + ] + ], + "result": "electronic-circuit" + }, + "expensive": { + "ingredients": [ + [ + "iron-plate", + 2 + ], + [ + "copper-cable", + 10 + ] + ], + "result": "electronic-circuit" + } + }, + "transport-belt": { + "type": "recipe", + "name": "transport-belt", + "ingredients": [ + [ + "iron-plate", + 1 + ], + [ + "iron-gear-wheel", + 1 + ] + ], + "result": "transport-belt", + "result_count": 2 + }, + "electric-mining-drill": { + "type": "recipe", + "name": "electric-mining-drill", + "normal": { + "energy_required": 2, + "ingredients": [ + [ + "electronic-circuit", + 3 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "iron-plate", + 10 + ] + ], + "result": "electric-mining-drill" + }, + "expensive": { + "energy_required": 2, + "ingredients": [ + [ + "electronic-circuit", + 5 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "iron-plate", + 20 + ] + ], + "result": "electric-mining-drill" + } + }, + "burner-mining-drill": { + "type": "recipe", + "name": "burner-mining-drill", + "normal": { + "energy_required": 2, + "ingredients": [ + [ + "iron-gear-wheel", + 3 + ], + [ + "stone-furnace", + 1 + ], + [ + "iron-plate", + 3 + ] + ], + "result": "burner-mining-drill" + }, + "expensive": { + "energy_required": 4, + "ingredients": [ + [ + "iron-gear-wheel", + 6 + ], + [ + "stone-furnace", + 2 + ], + [ + "iron-plate", + 6 + ] + ], + "result": "burner-mining-drill" + } + }, + "inserter": { + "type": "recipe", + "name": "inserter", + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "iron-gear-wheel", + 1 + ], + [ + "iron-plate", + 1 + ] + ], + "result": "inserter" + }, + "burner-inserter": { + "type": "recipe", + "name": "burner-inserter", + "ingredients": [ + [ + "iron-plate", + 1 + ], + [ + "iron-gear-wheel", + 1 + ] + ], + "result": "burner-inserter" + }, + "pipe": { + "type": "recipe", + "name": "pipe", + "normal": { + "ingredients": [ + [ + "iron-plate", + 1 + ] + ], + "result": "pipe" + }, + "expensive": { + "ingredients": [ + [ + "iron-plate", + 2 + ] + ], + "result": "pipe" + } + }, + "offshore-pump": { + "type": "recipe", + "name": "offshore-pump", + "ingredients": [ + [ + "electronic-circuit", + 2 + ], + [ + "pipe", + 1 + ], + [ + "iron-gear-wheel", + 1 + ] + ], + "result": "offshore-pump" + }, + "copper-cable": { + "type": "recipe", + "name": "copper-cable", + "ingredients": [ + [ + "copper-plate", + 1 + ] + ], + "result": "copper-cable", + "result_count": 2 + }, + "small-electric-pole": { + "type": "recipe", + "name": "small-electric-pole", + "ingredients": [ + [ + "wood", + 2 + ], + [ + "copper-cable", + 2 + ] + ], + "result": "small-electric-pole", + "result_count": 2 + }, + "pistol": { + "type": "recipe", + "name": "pistol", + "energy_required": 5, + "ingredients": [ + [ + "copper-plate", + 5 + ], + [ + "iron-plate", + 5 + ] + ], + "result": "pistol" + }, + "submachine-gun": { + "type": "recipe", + "name": "submachine-gun", + "normal": { + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "iron-gear-wheel", + 10 + ], + [ + "copper-plate", + 5 + ], + [ + "iron-plate", + 10 + ] + ], + "result": "submachine-gun" + }, + "expensive": { + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "iron-gear-wheel", + 15 + ], + [ + "copper-plate", + 20 + ], + [ + "iron-plate", + 30 + ] + ], + "result": "submachine-gun" + } + }, + "firearm-magazine": { + "type": "recipe", + "name": "firearm-magazine", + "energy_required": 1, + "ingredients": [ + [ + "iron-plate", + 4 + ] + ], + "result": "firearm-magazine", + "result_count": 1 + }, + "light-armor": { + "type": "recipe", + "name": "light-armor", + "enabled": true, + "energy_required": 3, + "ingredients": [ + [ + "iron-plate", + 40 + ] + ], + "result": "light-armor" + }, + "radar": { + "type": "recipe", + "name": "radar", + "ingredients": [ + [ + "electronic-circuit", + 5 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "iron-plate", + 10 + ] + ], + "result": "radar" + }, + "small-lamp": { + "type": "recipe", + "name": "small-lamp", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "iron-stick", + 3 + ], + [ + "iron-plate", + 1 + ] + ], + "result": "small-lamp" + }, + "pipe-to-ground": { + "type": "recipe", + "name": "pipe-to-ground", + "ingredients": [ + [ + "pipe", + 10 + ], + [ + "iron-plate", + 5 + ] + ], + "result_count": 2, + "result": "pipe-to-ground" + }, + "assembling-machine-1": { + "type": "recipe", + "name": "assembling-machine-1", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 3 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "iron-plate", + 9 + ] + ], + "result": "assembling-machine-1" + }, + "repair-pack": { + "type": "recipe", + "name": "repair-pack", + "ingredients": [ + [ + "electronic-circuit", + 2 + ], + [ + "iron-gear-wheel", + 2 + ] + ], + "result": "repair-pack" + }, + "gun-turret": { + "type": "recipe", + "name": "gun-turret", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "iron-gear-wheel", + 10 + ], + [ + "copper-plate", + 10 + ], + [ + "iron-plate", + 20 + ] + ], + "result": "gun-turret" + }, + "piercing-rounds-magazine": { + "type": "recipe", + "name": "piercing-rounds-magazine", + "enabled": false, + "energy_required": 3, + "ingredients": [ + [ + "firearm-magazine", + 1 + ], + [ + "steel-plate", + 1 + ], + [ + "copper-plate", + 5 + ] + ], + "result": "piercing-rounds-magazine" + }, + "uranium-rounds-magazine": { + "type": "recipe", + "name": "uranium-rounds-magazine", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "piercing-rounds-magazine", + 1 + ], + [ + "uranium-238", + 1 + ] + ], + "result": "uranium-rounds-magazine" + }, + "rocket": { + "type": "recipe", + "name": "rocket", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "explosives", + 1 + ], + [ + "iron-plate", + 2 + ] + ], + "result": "rocket" + }, + "explosive-rocket": { + "type": "recipe", + "name": "explosive-rocket", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "rocket", + 1 + ], + [ + "explosives", + 2 + ] + ], + "result": "explosive-rocket" + }, + "atomic-bomb": { + "type": "recipe", + "name": "atomic-bomb", + "enabled": false, + "energy_required": 50, + "ingredients": [ + [ + "processing-unit", + 20 + ], + [ + "explosives", + 10 + ], + [ + "uranium-235", + 30 + ] + ], + "result": "atomic-bomb" + }, + "shotgun-shell": { + "type": "recipe", + "name": "shotgun-shell", + "enabled": false, + "energy_required": 3, + "ingredients": [ + [ + "copper-plate", + 2 + ], + [ + "iron-plate", + 2 + ] + ], + "result": "shotgun-shell" + }, + "piercing-shotgun-shell": { + "type": "recipe", + "name": "piercing-shotgun-shell", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "shotgun-shell", + 2 + ], + [ + "copper-plate", + 5 + ], + [ + "steel-plate", + 2 + ] + ], + "result": "piercing-shotgun-shell" + }, + "railgun-dart": { + "type": "recipe", + "name": "railgun-dart", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "result": "railgun-dart" + }, + "cannon-shell": { + "type": "recipe", + "name": "cannon-shell", + "normal": { + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 2 + ], + [ + "plastic-bar", + 2 + ], + [ + "explosives", + 1 + ] + ], + "result": "cannon-shell" + }, + "expensive": { + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 4 + ], + [ + "plastic-bar", + 4 + ], + [ + "explosives", + 1 + ] + ], + "result": "cannon-shell" + } + }, + "explosive-cannon-shell": { + "type": "recipe", + "name": "explosive-cannon-shell", + "normal": { + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 2 + ], + [ + "plastic-bar", + 2 + ], + [ + "explosives", + 2 + ] + ], + "result": "explosive-cannon-shell" + }, + "expensive": { + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 4 + ], + [ + "plastic-bar", + 4 + ], + [ + "explosives", + 2 + ] + ], + "result": "explosive-cannon-shell" + } + }, + "uranium-cannon-shell": { + "type": "recipe", + "name": "uranium-cannon-shell", + "enabled": false, + "energy_required": 12, + "ingredients": [ + [ + "cannon-shell", + 1 + ], + [ + "uranium-238", + 1 + ] + ], + "result": "uranium-cannon-shell" + }, + "explosive-uranium-cannon-shell": { + "type": "recipe", + "name": "explosive-uranium-cannon-shell", + "enabled": false, + "energy_required": 12, + "ingredients": [ + [ + "explosive-cannon-shell", + 1 + ], + [ + "uranium-238", + 1 + ] + ], + "result": "explosive-uranium-cannon-shell" + }, + "artillery-shell": { + "type": "recipe", + "name": "artillery-shell", + "enabled": false, + "energy_required": 15, + "ingredients": [ + [ + "explosive-cannon-shell", + 4 + ], + [ + "radar", + 1 + ], + [ + "explosives", + 8 + ] + ], + "result": "artillery-shell" + }, + "flamethrower-ammo": { + "type": "recipe", + "name": "flamethrower-ammo", + "category": "chemistry", + "enabled": false, + "energy_required": 6, + "ingredients": [ + { + "type": "item", + "name": "steel-plate", + "amount": 5 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 50 + }, + { + "type": "fluid", + "name": "heavy-oil", + "amount": 50 + } + ], + "result": "flamethrower-ammo", + "crafting_machine_tint": { + "primary": { + "r": 0.845, + "g": 0.533, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.655, + "g": 0, + "b": 0, + "a": 0 + }, + "tertiary": { + "r": 0.685, + "g": 0.329, + "b": 0, + "a": 0 + } + } + }, + "poison-capsule": { + "type": "recipe", + "name": "poison-capsule", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 3 + ], + [ + "electronic-circuit", + 3 + ], + [ + "coal", + 10 + ] + ], + "result": "poison-capsule" + }, + "slowdown-capsule": { + "type": "recipe", + "name": "slowdown-capsule", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 2 + ], + [ + "electronic-circuit", + 2 + ], + [ + "coal", + 5 + ] + ], + "result": "slowdown-capsule" + }, + "grenade": { + "type": "recipe", + "name": "grenade", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "iron-plate", + 5 + ], + [ + "coal", + 10 + ] + ], + "result": "grenade" + }, + "cluster-grenade": { + "type": "recipe", + "name": "cluster-grenade", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "grenade", + 7 + ], + [ + "explosives", + 5 + ], + [ + "steel-plate", + 5 + ] + ], + "result": "cluster-grenade" + }, + "defender-capsule": { + "type": "recipe", + "name": "defender-capsule", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "piercing-rounds-magazine", + 1 + ], + [ + "electronic-circuit", + 2 + ], + [ + "iron-gear-wheel", + 3 + ] + ], + "result": "defender-capsule" + }, + "distractor-capsule": { + "type": "recipe", + "name": "distractor-capsule", + "enabled": false, + "energy_required": 15, + "ingredients": [ + [ + "defender-capsule", + 4 + ], + [ + "advanced-circuit", + 3 + ] + ], + "result": "distractor-capsule" + }, + "destroyer-capsule": { + "type": "recipe", + "name": "destroyer-capsule", + "enabled": false, + "energy_required": 15, + "ingredients": [ + [ + "distractor-capsule", + 4 + ], + [ + "speed-module", + 1 + ] + ], + "result": "destroyer-capsule" + }, + "discharge-defense-remote": { + "type": "recipe", + "name": "discharge-defense-remote", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 1 + ] + ], + "result": "discharge-defense-remote" + }, + "cliff-explosives": { + "type": "recipe", + "name": "cliff-explosives", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "explosives", + 10 + ], + [ + "grenade", + 1 + ], + [ + "empty-barrel", + 1 + ] + ], + "result": "cliff-explosives" + }, + "artillery-targeting-remote": { + "type": "recipe", + "name": "artillery-targeting-remote", + "enabled": false, + "ingredients": [ + [ + "processing-unit", + 1 + ], + [ + "radar", + 1 + ] + ], + "result": "artillery-targeting-remote" + }, + "night-vision-equipment": { + "type": "recipe", + "name": "night-vision-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "advanced-circuit", + 5 + ], + [ + "steel-plate", + 10 + ] + ], + "result": "night-vision-equipment" + }, + "energy-shield-equipment": { + "type": "recipe", + "name": "energy-shield-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "advanced-circuit", + 5 + ], + [ + "steel-plate", + 10 + ] + ], + "result": "energy-shield-equipment" + }, + "energy-shield-mk2-equipment": { + "type": "recipe", + "name": "energy-shield-mk2-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "energy-shield-equipment", + 10 + ], + [ + "processing-unit", + 10 + ] + ], + "result": "energy-shield-mk2-equipment" + }, + "battery-equipment": { + "type": "recipe", + "name": "battery-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "battery", + 5 + ], + [ + "steel-plate", + 10 + ] + ], + "result": "battery-equipment" + }, + "battery-mk2-equipment": { + "type": "recipe", + "name": "battery-mk2-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "battery-equipment", + 10 + ], + [ + "processing-unit", + 20 + ] + ], + "result": "battery-mk2-equipment" + }, + "solar-panel-equipment": { + "type": "recipe", + "name": "solar-panel-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "solar-panel", + 5 + ], + [ + "advanced-circuit", + 1 + ], + [ + "steel-plate", + 5 + ] + ], + "result": "solar-panel-equipment" + }, + "fusion-reactor-equipment": { + "type": "recipe", + "name": "fusion-reactor-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "processing-unit", + 250 + ] + ], + "result": "fusion-reactor-equipment" + }, + "personal-laser-defense-equipment": { + "type": "recipe", + "name": "personal-laser-defense-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "processing-unit", + 1 + ], + [ + "steel-plate", + 5 + ], + [ + "laser-turret", + 5 + ] + ], + "result": "personal-laser-defense-equipment" + }, + "discharge-defense-equipment": { + "type": "recipe", + "name": "discharge-defense-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "processing-unit", + 5 + ], + [ + "steel-plate", + 20 + ], + [ + "laser-turret", + 10 + ] + ], + "result": "discharge-defense-equipment" + }, + "exoskeleton-equipment": { + "type": "recipe", + "name": "exoskeleton-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "processing-unit", + 10 + ], + [ + "electric-engine-unit", + 30 + ], + [ + "steel-plate", + 20 + ] + ], + "result": "exoskeleton-equipment" + }, + "personal-roboport-equipment": { + "type": "recipe", + "name": "personal-roboport-equipment", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "advanced-circuit", + 10 + ], + [ + "iron-gear-wheel", + 40 + ], + [ + "steel-plate", + 20 + ], + [ + "battery", + 45 + ] + ], + "result": "personal-roboport-equipment" + }, + "personal-roboport-mk2-equipment": { + "type": "recipe", + "name": "personal-roboport-mk2-equipment", + "enabled": false, + "energy_required": 20, + "ingredients": [ + [ + "personal-roboport-equipment", + 5 + ], + [ + "processing-unit", + 100 + ] + ], + "result": "personal-roboport-mk2-equipment" + }, + "steel-plate": { + "type": "recipe", + "name": "steel-plate", + "category": "smelting", + "normal": { + "enabled": false, + "energy_required": 17.5, + "ingredients": [ + [ + "iron-plate", + 5 + ] + ], + "result": "steel-plate" + }, + "expensive": { + "enabled": false, + "energy_required": 35, + "ingredients": [ + [ + "iron-plate", + 10 + ] + ], + "result": "steel-plate" + } + }, + "basic-oil-processing": { + "type": "recipe", + "name": "basic-oil-processing", + "category": "oil-processing", + "enabled": false, + "energy_required": 5, + "ingredients": [ + { + "type": "fluid", + "name": "crude-oil", + "amount": 100 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 30 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 30 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 40 + } + ], + "icon": "factorio-data/graphics/icons/fluid/basic-oil-processing.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "a[oil-processing]-a[basic-oil-processing]" + }, + "advanced-oil-processing": { + "type": "recipe", + "name": "advanced-oil-processing", + "category": "oil-processing", + "enabled": false, + "energy_required": 5, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 50 + }, + { + "type": "fluid", + "name": "crude-oil", + "amount": 100 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 10 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 45 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 55 + } + ], + "icon": "factorio-data/graphics/icons/fluid/advanced-oil-processing.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "a[oil-processing]-b[advanced-oil-processing]" + }, + "coal-liquefaction": { + "type": "recipe", + "name": "coal-liquefaction", + "category": "oil-processing", + "enabled": false, + "energy_required": 5, + "ingredients": [ + { + "type": "item", + "name": "coal", + "amount": 10 + }, + { + "type": "fluid", + "name": "heavy-oil", + "amount": 25 + }, + { + "type": "fluid", + "name": "steam", + "amount": 50 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 35 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 15 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + } + ], + "icon": "factorio-data/graphics/icons/fluid/coal-liquefaction.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "a[oil-processing]-c[coal-liquefaction]", + "allow_decomposition": false + }, + "heavy-oil-cracking": { + "type": "recipe", + "name": "heavy-oil-cracking", + "category": "chemistry", + "enabled": false, + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 30 + }, + { + "type": "fluid", + "name": "heavy-oil", + "amount": 40 + } + ], + "results": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 30 + } + ], + "main_product": "", + "icon": "factorio-data/graphics/icons/fluid/heavy-oil-cracking.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "b[fluid-chemistry]-a[heavy-oil-cracking]", + "crafting_machine_tint": { + "primary": { + "r": 0.29, + "g": 0.027, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.722, + "g": 0.465, + "b": 0.19, + "a": 0 + }, + "tertiary": { + "r": 0.87, + "g": 0.365, + "b": 0, + "a": 0 + } + } + }, + "light-oil-cracking": { + "type": "recipe", + "name": "light-oil-cracking", + "category": "chemistry", + "enabled": false, + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 30 + }, + { + "type": "fluid", + "name": "light-oil", + "amount": 30 + } + ], + "results": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + } + ], + "main_product": "", + "icon": "factorio-data/graphics/icons/fluid/light-oil-cracking.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "order": "b[fluid-chemistry]-b[light-oil-cracking]", + "crafting_machine_tint": { + "primary": { + "r": 0.785, + "g": 0.406, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.795, + "g": 0.805, + "b": 0.605, + "a": 0 + }, + "tertiary": { + "r": 0.835, + "g": 0.551, + "b": 0, + "a": 0 + } + } + }, + "sulfuric-acid": { + "type": "recipe", + "name": "sulfuric-acid", + "category": "chemistry", + "energy_required": 1, + "enabled": false, + "ingredients": [ + { + "type": "item", + "name": "sulfur", + "amount": 5 + }, + { + "type": "item", + "name": "iron-plate", + "amount": 1 + }, + { + "type": "fluid", + "name": "water", + "amount": 100 + } + ], + "results": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 50 + } + ], + "subgroup": "fluid-recipes", + "crafting_machine_tint": { + "primary": { + "r": 0.875, + "g": 0.735, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.103, + "g": 0.94, + "b": 0, + "a": 0 + }, + "tertiary": { + "r": 0.564, + "g": 0.795, + "b": 0, + "a": 0 + } + } + }, + "plastic-bar": { + "type": "recipe", + "name": "plastic-bar", + "category": "chemistry", + "energy_required": 1, + "enabled": false, + "ingredients": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + }, + { + "type": "item", + "name": "coal", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "plastic-bar", + "amount": 2 + } + ], + "crafting_machine_tint": { + "primary": { + "r": 0.498, + "g": 0.498, + "b": 0.498, + "a": 0 + }, + "secondary": { + "r": 0.4, + "g": 0.4, + "b": 0.4, + "a": 0 + }, + "tertiary": { + "r": 0.305, + "g": 0.305, + "b": 0.305, + "a": 0 + } + } + }, + "solid-fuel-from-light-oil": { + "type": "recipe", + "name": "solid-fuel-from-light-oil", + "category": "chemistry", + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 10 + } + ], + "results": [ + { + "type": "item", + "name": "solid-fuel", + "amount": 1 + } + ], + "icon": "factorio-data/graphics/icons/solid-fuel-from-light-oil.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "enabled": false, + "order": "b[fluid-chemistry]-c[solid-fuel-from-light-oil]", + "crafting_machine_tint": { + "primary": { + "r": 0.27, + "g": 0.122, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.735, + "g": 0.546, + "b": 0.325, + "a": 0 + }, + "tertiary": { + "r": 0.61, + "g": 0.348, + "b": 0, + "a": 0 + } + } + }, + "solid-fuel-from-petroleum-gas": { + "type": "recipe", + "name": "solid-fuel-from-petroleum-gas", + "category": "chemistry", + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 20 + } + ], + "results": [ + { + "type": "item", + "name": "solid-fuel", + "amount": 1 + } + ], + "icon": "factorio-data/graphics/icons/solid-fuel-from-petroleum-gas.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "enabled": false, + "order": "b[fluid-chemistry]-d[solid-fuel-from-petroleum-gas]", + "crafting_machine_tint": { + "primary": { + "r": 0.331, + "g": 0.075, + "b": 0.51, + "a": 0 + }, + "secondary": { + "r": 0.589, + "g": 0.54, + "b": 0.615, + "a": 0.361 + }, + "tertiary": { + "r": 0.469, + "g": 0.145, + "b": 0.695, + "a": 0 + } + } + }, + "solid-fuel-from-heavy-oil": { + "type": "recipe", + "name": "solid-fuel-from-heavy-oil", + "category": "chemistry", + "energy_required": 3, + "ingredients": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 20 + } + ], + "results": [ + { + "type": "item", + "name": "solid-fuel", + "amount": 1 + } + ], + "icon": "factorio-data/graphics/icons/solid-fuel-from-heavy-oil.png", + "icon_size": 32, + "subgroup": "fluid-recipes", + "enabled": false, + "order": "b[fluid-chemistry]-e[solid-fuel-from-heavy-oil]", + "crafting_machine_tint": { + "primary": { + "r": 0.16, + "g": 0.095, + "b": 0.095, + "a": 0 + }, + "secondary": { + "r": 0.47, + "g": 0.215, + "b": 0.19, + "a": 0 + }, + "tertiary": { + "r": 0.435, + "g": 0.144, + "b": 0.135, + "a": 0 + } + } + }, + "sulfur": { + "type": "recipe", + "name": "sulfur", + "category": "chemistry", + "energy_required": 1, + "enabled": false, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 30 + }, + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 30 + } + ], + "results": [ + { + "type": "item", + "name": "sulfur", + "amount": 2 + } + ], + "crafting_machine_tint": { + "primary": { + "r": 1, + "g": 0.659, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0.812, + "g": 1, + "b": 0, + "a": 0 + }, + "tertiary": { + "r": 0.96, + "g": 0.806, + "b": 0, + "a": 0 + } + } + }, + "lubricant": { + "type": "recipe", + "name": "lubricant", + "category": "chemistry", + "enabled": false, + "energy_required": 1, + "ingredients": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 10 + } + ], + "results": [ + { + "type": "fluid", + "name": "lubricant", + "amount": 10 + } + ], + "subgroup": "fluid-recipes", + "crafting_machine_tint": { + "primary": { + "r": 0, + "g": 0.26, + "b": 0.01, + "a": 0 + }, + "secondary": { + "r": 0.071, + "g": 0.64, + "b": 0, + "a": 0 + }, + "tertiary": { + "r": 0.026, + "g": 0.52, + "b": 0, + "a": 0 + } + } + }, + "empty-barrel": { + "type": "recipe", + "name": "empty-barrel", + "category": "crafting", + "energy_required": 1, + "subgroup": "intermediate-product", + "enabled": false, + "ingredients": [ + { + "type": "item", + "name": "steel-plate", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ] + }, + "long-handed-inserter": { + "type": "recipe", + "name": "long-handed-inserter", + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 1 + ], + [ + "iron-plate", + 1 + ], + [ + "inserter", + 1 + ] + ], + "result": "long-handed-inserter" + }, + "fast-inserter": { + "type": "recipe", + "name": "fast-inserter", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 2 + ], + [ + "iron-plate", + 2 + ], + [ + "inserter", + 1 + ] + ], + "result": "fast-inserter" + }, + "filter-inserter": { + "type": "recipe", + "name": "filter-inserter", + "enabled": false, + "ingredients": [ + [ + "fast-inserter", + 1 + ], + [ + "electronic-circuit", + 4 + ] + ], + "result": "filter-inserter" + }, + "stack-inserter": { + "type": "recipe", + "name": "stack-inserter", + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 15 + ], + [ + "electronic-circuit", + 15 + ], + [ + "advanced-circuit", + 1 + ], + [ + "fast-inserter", + 1 + ] + ], + "result": "stack-inserter" + }, + "stack-filter-inserter": { + "type": "recipe", + "name": "stack-filter-inserter", + "enabled": false, + "ingredients": [ + [ + "stack-inserter", + 1 + ], + [ + "electronic-circuit", + 5 + ] + ], + "result": "stack-filter-inserter" + }, + "speed-module": { + "type": "recipe", + "name": "speed-module", + "enabled": false, + "ingredients": [ + [ + "advanced-circuit", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "energy_required": 15, + "result": "speed-module" + }, + "speed-module-2": { + "type": "recipe", + "name": "speed-module-2", + "enabled": false, + "ingredients": [ + [ + "speed-module", + 4 + ], + [ + "advanced-circuit", + 5 + ], + [ + "processing-unit", + 5 + ] + ], + "energy_required": 30, + "result": "speed-module-2" + }, + "speed-module-3": { + "type": "recipe", + "name": "speed-module-3", + "enabled": false, + "ingredients": [ + [ + "speed-module-2", + 5 + ], + [ + "advanced-circuit", + 5 + ], + [ + "processing-unit", + 5 + ] + ], + "energy_required": 60, + "result": "speed-module-3" + }, + "productivity-module": { + "type": "recipe", + "name": "productivity-module", + "enabled": false, + "ingredients": [ + [ + "advanced-circuit", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "energy_required": 15, + "result": "productivity-module" + }, + "productivity-module-2": { + "type": "recipe", + "name": "productivity-module-2", + "enabled": false, + "ingredients": [ + [ + "productivity-module", + 4 + ], + [ + "advanced-circuit", + 5 + ], + [ + "processing-unit", + 5 + ] + ], + "energy_required": 30, + "result": "productivity-module-2" + }, + "productivity-module-3": { + "type": "recipe", + "name": "productivity-module-3", + "enabled": false, + "ingredients": [ + [ + "productivity-module-2", + 5 + ], + [ + "advanced-circuit", + 5 + ], + [ + "processing-unit", + 5 + ] + ], + "energy_required": 60, + "result": "productivity-module-3" + }, + "effectivity-module": { + "type": "recipe", + "name": "effectivity-module", + "enabled": false, + "ingredients": [ + [ + "advanced-circuit", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "energy_required": 15, + "result": "effectivity-module" + }, + "effectivity-module-2": { + "type": "recipe", + "name": "effectivity-module-2", + "enabled": false, + "ingredients": [ + [ + "effectivity-module", + 4 + ], + [ + "advanced-circuit", + 5 + ], + [ + "processing-unit", + 5 + ] + ], + "energy_required": 30, + "result": "effectivity-module-2" + }, + "effectivity-module-3": { + "type": "recipe", + "name": "effectivity-module-3", + "enabled": false, + "ingredients": [ + [ + "effectivity-module-2", + 5 + ], + [ + "advanced-circuit", + 5 + ], + [ + "processing-unit", + 5 + ] + ], + "energy_required": 60, + "result": "effectivity-module-3" + }, + "player-port": { + "type": "recipe", + "name": "player-port", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 10 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "iron-plate", + 1 + ] + ], + "result": "player-port" + }, + "fast-transport-belt": { + "type": "recipe", + "name": "fast-transport-belt", + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 5 + ], + [ + "transport-belt", + 1 + ] + ], + "result": "fast-transport-belt" + }, + "express-transport-belt": { + "type": "recipe", + "name": "express-transport-belt", + "category": "crafting-with-fluid", + "normal": { + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 10 + ], + [ + "fast-transport-belt", + 1 + ], + { + "type": "fluid", + "name": "lubricant", + "amount": 20 + } + ], + "result": "express-transport-belt" + }, + "expensive": { + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 20 + ], + [ + "fast-transport-belt", + 1 + ], + { + "type": "fluid", + "name": "lubricant", + "amount": 20 + } + ], + "result": "express-transport-belt" + } + }, + "solar-panel": { + "type": "recipe", + "name": "solar-panel", + "energy_required": 10, + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "electronic-circuit", + 15 + ], + [ + "copper-plate", + 5 + ] + ], + "result": "solar-panel" + }, + "assembling-machine-2": { + "type": "recipe", + "name": "assembling-machine-2", + "normal": { + "enabled": false, + "ingredients": [ + [ + "iron-plate", + 9 + ], + [ + "electronic-circuit", + 3 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "assembling-machine-1", + 1 + ] + ], + "result": "assembling-machine-2" + }, + "expensive": { + "enabled": false, + "ingredients": [ + [ + "iron-plate", + 20 + ], + [ + "electronic-circuit", + 5 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "assembling-machine-1", + 1 + ] + ], + "result": "assembling-machine-2" + } + }, + "assembling-machine-3": { + "type": "recipe", + "name": "assembling-machine-3", + "enabled": false, + "ingredients": [ + [ + "speed-module", + 4 + ], + [ + "assembling-machine-2", + 2 + ] + ], + "result": "assembling-machine-3" + }, + "car": { + "type": "recipe", + "name": "car", + "enabled": false, + "energy_required": 2, + "ingredients": [ + [ + "engine-unit", + 8 + ], + [ + "iron-plate", + 20 + ], + [ + "steel-plate", + 5 + ] + ], + "result": "car" + }, + "tank": { + "type": "recipe", + "name": "tank", + "normal": { + "enabled": false, + "energy_required": 5, + "ingredients": [ + [ + "engine-unit", + 32 + ], + [ + "steel-plate", + 50 + ], + [ + "iron-gear-wheel", + 15 + ], + [ + "advanced-circuit", + 10 + ] + ], + "result": "tank" + }, + "expensive": { + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "engine-unit", + 64 + ], + [ + "steel-plate", + 100 + ], + [ + "iron-gear-wheel", + 30 + ], + [ + "advanced-circuit", + 20 + ] + ], + "result": "tank" + } + }, + "rail": { + "type": "recipe", + "name": "rail", + "enabled": false, + "ingredients": [ + [ + "stone", + 1 + ], + [ + "iron-stick", + 1 + ], + [ + "steel-plate", + 1 + ] + ], + "result": "rail", + "result_count": 2 + }, + "locomotive": { + "type": "recipe", + "name": "locomotive", + "energy_required": 4, + "enabled": false, + "ingredients": [ + [ + "engine-unit", + 20 + ], + [ + "electronic-circuit", + 10 + ], + [ + "steel-plate", + 30 + ] + ], + "result": "locomotive" + }, + "cargo-wagon": { + "type": "recipe", + "name": "cargo-wagon", + "energy_required": 1, + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 10 + ], + [ + "iron-plate", + 20 + ], + [ + "steel-plate", + 20 + ] + ], + "result": "cargo-wagon" + }, + "fluid-wagon": { + "type": "recipe", + "name": "fluid-wagon", + "enabled": false, + "energy_required": 1.5, + "ingredients": [ + [ + "iron-gear-wheel", + 10 + ], + [ + "steel-plate", + 16 + ], + [ + "pipe", + 8 + ], + [ + "storage-tank", + 1 + ] + ], + "result": "fluid-wagon" + }, + "artillery-wagon": { + "type": "recipe", + "name": "artillery-wagon", + "energy_required": 4, + "enabled": false, + "ingredients": [ + [ + "engine-unit", + 64 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "steel-plate", + 40 + ], + [ + "pipe", + 16 + ], + [ + "advanced-circuit", + 20 + ] + ], + "result": "artillery-wagon" + }, + "train-stop": { + "type": "recipe", + "name": "train-stop", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 5 + ], + [ + "iron-plate", + 10 + ], + [ + "steel-plate", + 3 + ] + ], + "result": "train-stop" + }, + "rail-signal": { + "type": "recipe", + "name": "rail-signal", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "iron-plate", + 5 + ] + ], + "result": "rail-signal" + }, + "rail-chain-signal": { + "type": "recipe", + "name": "rail-chain-signal", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "iron-plate", + 5 + ] + ], + "result": "rail-chain-signal" + }, + "heavy-armor": { + "type": "recipe", + "name": "heavy-armor", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "copper-plate", + 100 + ], + [ + "steel-plate", + 50 + ] + ], + "result": "heavy-armor" + }, + "modular-armor": { + "type": "recipe", + "name": "modular-armor", + "enabled": false, + "energy_required": 15, + "ingredients": [ + [ + "advanced-circuit", + 30 + ], + [ + "steel-plate", + 50 + ] + ], + "result": "modular-armor" + }, + "power-armor": { + "type": "recipe", + "name": "power-armor", + "enabled": false, + "energy_required": 20, + "ingredients": [ + [ + "processing-unit", + 40 + ], + [ + "electric-engine-unit", + 20 + ], + [ + "steel-plate", + 40 + ] + ], + "result": "power-armor", + "requester_paste_multiplier": 1 + }, + "power-armor-mk2": { + "type": "recipe", + "name": "power-armor-mk2", + "enabled": false, + "energy_required": 25, + "ingredients": [ + [ + "effectivity-module-3", + 5 + ], + [ + "speed-module-3", + 5 + ], + [ + "processing-unit", + 40 + ], + [ + "steel-plate", + 40 + ] + ], + "result": "power-armor-mk2", + "requester_paste_multiplier": 1 + }, + "iron-chest": { + "type": "recipe", + "name": "iron-chest", + "enabled": true, + "ingredients": [ + [ + "iron-plate", + 8 + ] + ], + "result": "iron-chest" + }, + "steel-chest": { + "type": "recipe", + "name": "steel-chest", + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 8 + ] + ], + "result": "steel-chest" + }, + "stone-wall": { + "type": "recipe", + "name": "stone-wall", + "enabled": false, + "ingredients": [ + [ + "stone-brick", + 5 + ] + ], + "result": "stone-wall" + }, + "gate": { + "type": "recipe", + "name": "gate", + "enabled": false, + "ingredients": [ + [ + "stone-wall", + 1 + ], + [ + "steel-plate", + 2 + ], + [ + "electronic-circuit", + 2 + ] + ], + "result": "gate" + }, + "flamethrower": { + "type": "recipe", + "name": "flamethrower", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "iron-gear-wheel", + 10 + ] + ], + "result": "flamethrower" + }, + "land-mine": { + "type": "recipe", + "name": "land-mine", + "enabled": false, + "energy_required": 5, + "ingredients": [ + [ + "steel-plate", + 1 + ], + [ + "explosives", + 2 + ] + ], + "result": "land-mine", + "result_count": 4 + }, + "rocket-launcher": { + "type": "recipe", + "name": "rocket-launcher", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "iron-plate", + 5 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "result": "rocket-launcher" + }, + "shotgun": { + "type": "recipe", + "name": "shotgun", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "iron-plate", + 15 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "copper-plate", + 10 + ], + [ + "wood", + 5 + ] + ], + "result": "shotgun" + }, + "combat-shotgun": { + "type": "recipe", + "name": "combat-shotgun", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "steel-plate", + 15 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "copper-plate", + 10 + ], + [ + "wood", + 10 + ] + ], + "result": "combat-shotgun" + }, + "railgun": { + "type": "recipe", + "name": "railgun", + "enabled": false, + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 15 + ], + [ + "copper-plate", + 15 + ], + [ + "electronic-circuit", + 10 + ], + [ + "advanced-circuit", + 5 + ] + ], + "result": "railgun" + }, + "science-pack-1": { + "type": "recipe", + "name": "science-pack-1", + "energy_required": 5, + "ingredients": [ + [ + "copper-plate", + 1 + ], + [ + "iron-gear-wheel", + 1 + ] + ], + "result": "science-pack-1" + }, + "science-pack-2": { + "type": "recipe", + "name": "science-pack-2", + "energy_required": 6, + "ingredients": [ + [ + "inserter", + 1 + ], + [ + "transport-belt", + 1 + ] + ], + "result": "science-pack-2" + }, + "science-pack-3": { + "type": "recipe", + "name": "science-pack-3", + "enabled": false, + "energy_required": 12, + "ingredients": [ + [ + "advanced-circuit", + 1 + ], + [ + "engine-unit", + 1 + ], + [ + "electric-mining-drill", + 1 + ] + ], + "result": "science-pack-3" + }, + "military-science-pack": { + "type": "recipe", + "name": "military-science-pack", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "piercing-rounds-magazine", + 1 + ], + [ + "grenade", + 1 + ], + [ + "gun-turret", + 1 + ] + ], + "result_count": 2, + "result": "military-science-pack" + }, + "production-science-pack": { + "type": "recipe", + "name": "production-science-pack", + "enabled": false, + "energy_required": 14, + "ingredients": [ + [ + "electric-engine-unit", + 1 + ], + [ + "electric-furnace", + 1 + ] + ], + "result_count": 2, + "result": "production-science-pack" + }, + "high-tech-science-pack": { + "type": "recipe", + "name": "high-tech-science-pack", + "enabled": false, + "energy_required": 14, + "ingredients": [ + [ + "battery", + 1 + ], + [ + "processing-unit", + 3 + ], + [ + "speed-module", + 1 + ], + [ + "copper-cable", + 30 + ] + ], + "result_count": 2, + "result": "high-tech-science-pack" + }, + "lab": { + "type": "recipe", + "name": "lab", + "energy_required": 2, + "ingredients": [ + [ + "electronic-circuit", + 10 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "transport-belt", + 4 + ] + ], + "result": "lab" + }, + "red-wire": { + "type": "recipe", + "name": "red-wire", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "copper-cable", + 1 + ] + ], + "result": "red-wire" + }, + "green-wire": { + "type": "recipe", + "name": "green-wire", + "enabled": false, + "ingredients": [ + [ + "electronic-circuit", + 1 + ], + [ + "copper-cable", + 1 + ] + ], + "result": "green-wire" + }, + "underground-belt": { + "type": "recipe", + "name": "underground-belt", + "enabled": false, + "energy_required": 1, + "ingredients": [ + [ + "iron-plate", + 10 + ], + [ + "transport-belt", + 5 + ] + ], + "result_count": 2, + "result": "underground-belt" + }, + "fast-underground-belt": { + "type": "recipe", + "name": "fast-underground-belt", + "energy_required": 2, + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 40 + ], + [ + "underground-belt", + 2 + ] + ], + "result_count": 2, + "result": "fast-underground-belt" + }, + "express-underground-belt": { + "type": "recipe", + "name": "express-underground-belt", + "energy_required": 2, + "category": "crafting-with-fluid", + "enabled": false, + "ingredients": [ + [ + "iron-gear-wheel", + 80 + ], + [ + "fast-underground-belt", + 2 + ], + { + "type": "fluid", + "name": "lubricant", + "amount": 40 + } + ], + "result_count": 2, + "result": "express-underground-belt" + }, + "loader": { + "type": "recipe", + "name": "loader", + "enabled": false, + "energy_required": 1, + "ingredients": [ + [ + "inserter", + 5 + ], + [ + "electronic-circuit", + 5 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "iron-plate", + 5 + ], + [ + "transport-belt", + 5 + ] + ], + "result": "loader" + }, + "fast-loader": { + "type": "recipe", + "name": "fast-loader", + "enabled": false, + "energy_required": 3, + "ingredients": [ + [ + "fast-transport-belt", + 5 + ], + [ + "loader", + 1 + ] + ], + "result": "fast-loader" + }, + "express-loader": { + "type": "recipe", + "name": "express-loader", + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "express-transport-belt", + 5 + ], + [ + "fast-loader", + 1 + ] + ], + "result": "express-loader" + }, + "splitter": { + "type": "recipe", + "name": "splitter", + "enabled": false, + "energy_required": 1, + "ingredients": [ + [ + "electronic-circuit", + 5 + ], + [ + "iron-plate", + 5 + ], + [ + "transport-belt", + 4 + ] + ], + "result": "splitter" + }, + "fast-splitter": { + "type": "recipe", + "name": "fast-splitter", + "enabled": false, + "energy_required": 2, + "ingredients": [ + [ + "splitter", + 1 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "electronic-circuit", + 10 + ] + ], + "result": "fast-splitter" + }, + "express-splitter": { + "type": "recipe", + "name": "express-splitter", + "category": "crafting-with-fluid", + "enabled": false, + "energy_required": 2, + "ingredients": [ + [ + "fast-splitter", + 1 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "advanced-circuit", + 10 + ], + { + "type": "fluid", + "name": "lubricant", + "amount": 80 + } + ], + "result": "express-splitter" + }, + "advanced-circuit": { + "type": "recipe", + "name": "advanced-circuit", + "normal": { + "enabled": false, + "energy_required": 6, + "ingredients": [ + [ + "electronic-circuit", + 2 + ], + [ + "plastic-bar", + 2 + ], + [ + "copper-cable", + 4 + ] + ], + "result": "advanced-circuit" + }, + "expensive": { + "enabled": false, + "energy_required": 6, + "ingredients": [ + [ + "electronic-circuit", + 2 + ], + [ + "plastic-bar", + 4 + ], + [ + "copper-cable", + 8 + ] + ], + "result": "advanced-circuit" + } + }, + "processing-unit": { + "type": "recipe", + "name": "processing-unit", + "category": "crafting-with-fluid", + "normal": { + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "electronic-circuit", + 20 + ], + [ + "advanced-circuit", + 2 + ], + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 5 + } + ], + "result": "processing-unit" + }, + "expensive": { + "enabled": false, + "energy_required": 10, + "ingredients": [ + [ + "electronic-circuit", + 20 + ], + [ + "advanced-circuit", + 2 + ], + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 10 + } + ], + "result": "processing-unit" + } + }, + "logistic-robot": { + "type": "recipe", + "name": "logistic-robot", + "enabled": false, + "ingredients": [ + [ + "flying-robot-frame", + 1 + ], + [ + "advanced-circuit", + 2 + ] + ], + "result": "logistic-robot" + }, + "construction-robot": { + "type": "recipe", + "name": "construction-robot", + "enabled": false, + "ingredients": [ + [ + "flying-robot-frame", + 1 + ], + [ + "electronic-circuit", + 2 + ] + ], + "result": "construction-robot" + }, + "logistic-chest-passive-provider": { + "type": "recipe", + "name": "logistic-chest-passive-provider", + "enabled": false, + "ingredients": [ + [ + "steel-chest", + 1 + ], + [ + "electronic-circuit", + 3 + ], + [ + "advanced-circuit", + 1 + ] + ], + "result": "logistic-chest-passive-provider" + }, + "logistic-chest-active-provider": { + "type": "recipe", + "name": "logistic-chest-active-provider", + "enabled": false, + "ingredients": [ + [ + "steel-chest", + 1 + ], + [ + "electronic-circuit", + 3 + ], + [ + "advanced-circuit", + 1 + ] + ], + "result": "logistic-chest-active-provider" + }, + "logistic-chest-storage": { + "type": "recipe", + "name": "logistic-chest-storage", + "enabled": false, + "ingredients": [ + [ + "steel-chest", + 1 + ], + [ + "electronic-circuit", + 3 + ], + [ + "advanced-circuit", + 1 + ] + ], + "result": "logistic-chest-storage" + }, + "logistic-chest-buffer": { + "type": "recipe", + "name": "logistic-chest-buffer", + "enabled": false, + "ingredients": [ + [ + "steel-chest", + 1 + ], + [ + "electronic-circuit", + 3 + ], + [ + "advanced-circuit", + 1 + ] + ], + "result": "logistic-chest-buffer" + }, + "logistic-chest-requester": { + "type": "recipe", + "name": "logistic-chest-requester", + "enabled": false, + "ingredients": [ + [ + "steel-chest", + 1 + ], + [ + "electronic-circuit", + 3 + ], + [ + "advanced-circuit", + 1 + ] + ], + "result": "logistic-chest-requester" + }, + "rocket-silo": { + "type": "recipe", + "name": "rocket-silo", + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 1000 + ], + [ + "concrete", + 1000 + ], + [ + "pipe", + 100 + ], + [ + "processing-unit", + 200 + ], + [ + "electric-engine-unit", + 200 + ] + ], + "energy_required": 30, + "result": "rocket-silo", + "requester_paste_multiplier": 1 + }, + "roboport": { + "type": "recipe", + "name": "roboport", + "enabled": false, + "energy_required": 5, + "ingredients": [ + [ + "steel-plate", + 45 + ], + [ + "iron-gear-wheel", + 45 + ], + [ + "advanced-circuit", + 45 + ] + ], + "result": "roboport" + }, + "steel-axe": { + "type": "recipe", + "name": "steel-axe", + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "iron-stick", + 2 + ] + ], + "result": "steel-axe" + }, + "big-electric-pole": { + "type": "recipe", + "name": "big-electric-pole", + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "copper-plate", + 5 + ] + ], + "result": "big-electric-pole" + }, + "substation": { + "type": "recipe", + "name": "substation", + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 10 + ], + [ + "advanced-circuit", + 5 + ], + [ + "copper-plate", + 5 + ] + ], + "result": "substation" + }, + "medium-electric-pole": { + "type": "recipe", + "name": "medium-electric-pole", + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 2 + ], + [ + "copper-plate", + 2 + ] + ], + "result": "medium-electric-pole" + }, + "accumulator": { + "type": "recipe", + "name": "accumulator", + "energy_required": 10, + "enabled": false, + "ingredients": [ + [ + "iron-plate", + 2 + ], + [ + "battery", + 5 + ] + ], + "result": "accumulator" + }, + "steel-furnace": { + "type": "recipe", + "name": "steel-furnace", + "ingredients": [ + [ + "steel-plate", + 6 + ], + [ + "stone-brick", + 10 + ] + ], + "result": "steel-furnace", + "energy_required": 3, + "enabled": false + }, + "electric-furnace": { + "type": "recipe", + "name": "electric-furnace", + "ingredients": [ + [ + "steel-plate", + 10 + ], + [ + "advanced-circuit", + 5 + ], + [ + "stone-brick", + 10 + ] + ], + "result": "electric-furnace", + "energy_required": 5, + "enabled": false + }, + "beacon": { + "type": "recipe", + "name": "beacon", + "enabled": false, + "energy_required": 15, + "ingredients": [ + [ + "electronic-circuit", + 20 + ], + [ + "advanced-circuit", + 20 + ], + [ + "steel-plate", + 10 + ], + [ + "copper-cable", + 10 + ] + ], + "result": "beacon" + }, + "pumpjack": { + "type": "recipe", + "name": "pumpjack", + "energy_required": 5, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "electronic-circuit", + 5 + ], + [ + "pipe", + 10 + ] + ], + "result": "pumpjack", + "enabled": false + }, + "oil-refinery": { + "type": "recipe", + "name": "oil-refinery", + "energy_required": 8, + "ingredients": [ + [ + "steel-plate", + 15 + ], + [ + "iron-gear-wheel", + 10 + ], + [ + "stone-brick", + 10 + ], + [ + "electronic-circuit", + 10 + ], + [ + "pipe", + 10 + ] + ], + "result": "oil-refinery", + "enabled": false + }, + "engine-unit": { + "type": "recipe", + "name": "engine-unit", + "energy_required": 10, + "category": "advanced-crafting", + "ingredients": [ + [ + "steel-plate", + 1 + ], + [ + "iron-gear-wheel", + 1 + ], + [ + "pipe", + 2 + ] + ], + "result": "engine-unit", + "enabled": false + }, + "electric-engine-unit": { + "type": "recipe", + "name": "electric-engine-unit", + "category": "crafting-with-fluid", + "energy_required": 10, + "ingredients": [ + [ + "engine-unit", + 1 + ], + { + "type": "fluid", + "name": "lubricant", + "amount": 15 + }, + [ + "electronic-circuit", + 2 + ] + ], + "result": "electric-engine-unit", + "enabled": false + }, + "flying-robot-frame": { + "type": "recipe", + "name": "flying-robot-frame", + "energy_required": 20, + "ingredients": [ + [ + "electric-engine-unit", + 1 + ], + [ + "battery", + 2 + ], + [ + "steel-plate", + 1 + ], + [ + "electronic-circuit", + 3 + ] + ], + "result": "flying-robot-frame", + "enabled": false + }, + "explosives": { + "type": "recipe", + "name": "explosives", + "category": "chemistry", + "crafting_machine_tint": { + "primary": { + "r": 0.955, + "g": 0.945, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0, + "g": 0.441, + "b": 0.659, + "a": 0.898 + }, + "tertiary": { + "r": 0, + "g": 0.288, + "b": 0.365, + "a": 0 + } + }, + "normal": { + "energy_required": 5, + "enabled": false, + "ingredients": [ + { + "type": "item", + "name": "sulfur", + "amount": 1 + }, + { + "type": "item", + "name": "coal", + "amount": 1 + }, + { + "type": "fluid", + "name": "water", + "amount": 10 + } + ], + "result": "explosives", + "result_count": 2 + }, + "expensive": { + "energy_required": 5, + "enabled": false, + "ingredients": [ + { + "type": "item", + "name": "sulfur", + "amount": 2 + }, + { + "type": "item", + "name": "coal", + "amount": 2 + }, + { + "type": "fluid", + "name": "water", + "amount": 10 + } + ], + "result": "explosives", + "result_count": 2 + } + }, + "battery": { + "type": "recipe", + "name": "battery", + "category": "chemistry", + "normal": { + "energy_required": 5, + "enabled": false, + "ingredients": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 20 + }, + [ + "iron-plate", + 1 + ], + [ + "copper-plate", + 1 + ] + ], + "result": "battery" + }, + "expensive": { + "energy_required": 5, + "enabled": false, + "ingredients": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 40 + }, + [ + "iron-plate", + 1 + ], + [ + "copper-plate", + 1 + ] + ], + "result": "battery" + }, + "crafting_machine_tint": { + "primary": { + "r": 0.97, + "g": 0.611, + "b": 0, + "a": 0 + }, + "secondary": { + "r": 0, + "g": 0.68, + "b": 0.894, + "a": 0.357 + }, + "tertiary": { + "r": 0.43, + "g": 0.805, + "b": 0.726, + "a": 0 + } + } + }, + "storage-tank": { + "type": "recipe", + "name": "storage-tank", + "energy_required": 3, + "enabled": false, + "ingredients": [ + [ + "iron-plate", + 20 + ], + [ + "steel-plate", + 5 + ] + ], + "result": "storage-tank" + }, + "pump": { + "type": "recipe", + "name": "pump", + "energy_required": 2, + "enabled": false, + "ingredients": [ + [ + "engine-unit", + 1 + ], + [ + "steel-plate", + 1 + ], + [ + "pipe", + 1 + ] + ], + "result": "pump" + }, + "chemical-plant": { + "type": "recipe", + "name": "chemical-plant", + "energy_required": 5, + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 5 + ], + [ + "iron-gear-wheel", + 5 + ], + [ + "electronic-circuit", + 5 + ], + [ + "pipe", + 5 + ] + ], + "result": "chemical-plant" + }, + "small-plane": { + "type": "recipe", + "name": "small-plane", + "energy_required": 30, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "plastic-bar", + 100 + ], + [ + "advanced-circuit", + 200 + ], + [ + "electric-engine-unit", + 20 + ], + [ + "battery", + 100 + ] + ], + "result": "small-plane" + }, + "arithmetic-combinator": { + "type": "recipe", + "name": "arithmetic-combinator", + "enabled": false, + "ingredients": [ + [ + "copper-cable", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "result": "arithmetic-combinator" + }, + "decider-combinator": { + "type": "recipe", + "name": "decider-combinator", + "enabled": false, + "ingredients": [ + [ + "copper-cable", + 5 + ], + [ + "electronic-circuit", + 5 + ] + ], + "result": "decider-combinator" + }, + "constant-combinator": { + "type": "recipe", + "name": "constant-combinator", + "enabled": false, + "ingredients": [ + [ + "copper-cable", + 5 + ], + [ + "electronic-circuit", + 2 + ] + ], + "result": "constant-combinator" + }, + "power-switch": { + "type": "recipe", + "name": "power-switch", + "enabled": false, + "energy_required": 2, + "ingredients": [ + [ + "iron-plate", + 5 + ], + [ + "copper-cable", + 5 + ], + [ + "electronic-circuit", + 2 + ] + ], + "result": "power-switch" + }, + "programmable-speaker": { + "type": "recipe", + "name": "programmable-speaker", + "enabled": false, + "energy_required": 2, + "ingredients": [ + [ + "iron-plate", + 5 + ], + [ + "copper-cable", + 5 + ], + [ + "electronic-circuit", + 4 + ] + ], + "result": "programmable-speaker" + }, + "low-density-structure": { + "type": "recipe", + "name": "low-density-structure", + "category": "crafting", + "normal": { + "energy_required": 30, + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 10 + ], + [ + "copper-plate", + 5 + ], + [ + "plastic-bar", + 5 + ] + ], + "result": "low-density-structure" + }, + "expensive": { + "energy_required": 30, + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 10 + ], + [ + "copper-plate", + 10 + ], + [ + "plastic-bar", + 10 + ] + ], + "result": "low-density-structure" + } + }, + "rocket-fuel": { + "type": "recipe", + "name": "rocket-fuel", + "energy_required": 30, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "solid-fuel", + 10 + ] + ], + "result": "rocket-fuel" + }, + "rocket-control-unit": { + "type": "recipe", + "name": "rocket-control-unit", + "energy_required": 30, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "processing-unit", + 1 + ], + [ + "speed-module", + 1 + ] + ], + "result": "rocket-control-unit" + }, + "rocket-part": { + "type": "recipe", + "name": "rocket-part", + "energy_required": 3, + "enabled": false, + "hidden": true, + "category": "rocket-building", + "ingredients": [ + [ + "rocket-control-unit", + 10 + ], + [ + "low-density-structure", + 10 + ], + [ + "rocket-fuel", + 10 + ] + ], + "result": "rocket-part" + }, + "satellite": { + "type": "recipe", + "name": "satellite", + "energy_required": 5, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "low-density-structure", + 100 + ], + [ + "solar-panel", + 100 + ], + [ + "accumulator", + 100 + ], + [ + "radar", + 5 + ], + [ + "processing-unit", + 100 + ], + [ + "rocket-fuel", + 50 + ] + ], + "result": "satellite", + "requester_paste_multiplier": 1 + }, + "concrete": { + "type": "recipe", + "name": "concrete", + "energy_required": 10, + "enabled": false, + "category": "crafting-with-fluid", + "ingredients": [ + [ + "stone-brick", + 5 + ], + [ + "iron-ore", + 1 + ], + { + "type": "fluid", + "name": "water", + "amount": 100 + } + ], + "result": "concrete", + "result_count": 10 + }, + "hazard-concrete": { + "type": "recipe", + "name": "hazard-concrete", + "energy_required": 0.25, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "concrete", + 10 + ] + ], + "result": "hazard-concrete", + "result_count": 10 + }, + "refined-concrete": { + "type": "recipe", + "name": "refined-concrete", + "energy_required": 15, + "enabled": false, + "category": "crafting-with-fluid", + "ingredients": [ + [ + "concrete", + 20 + ], + [ + "iron-stick", + 8 + ], + [ + "steel-plate", + 1 + ], + { + "type": "fluid", + "name": "water", + "amount": 100 + } + ], + "result": "refined-concrete", + "result_count": 10 + }, + "refined-hazard-concrete": { + "type": "recipe", + "name": "refined-hazard-concrete", + "energy_required": 0.25, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "refined-concrete", + 10 + ] + ], + "result": "refined-hazard-concrete", + "result_count": 10 + }, + "landfill": { + "type": "recipe", + "name": "landfill", + "energy_required": 0.5, + "enabled": false, + "category": "crafting", + "ingredients": [ + [ + "stone", + 20 + ] + ], + "result": "landfill", + "result_count": 1 + }, + "electric-energy-interface": { + "type": "recipe", + "name": "electric-energy-interface", + "energy_required": 0.5, + "enabled": false, + "ingredients": [ + [ + "iron-plate", + 2 + ], + [ + "electronic-circuit", + 5 + ] + ], + "result": "electric-energy-interface" + }, + "nuclear-reactor": { + "type": "recipe", + "name": "nuclear-reactor", + "energy_required": 8, + "enabled": false, + "ingredients": [ + [ + "concrete", + 500 + ], + [ + "steel-plate", + 500 + ], + [ + "advanced-circuit", + 500 + ], + [ + "copper-plate", + 500 + ] + ], + "result": "nuclear-reactor", + "requester_paste_multiplier": 1 + }, + "centrifuge": { + "type": "recipe", + "name": "centrifuge", + "energy_required": 4, + "enabled": false, + "ingredients": [ + [ + "concrete", + 100 + ], + [ + "steel-plate", + 50 + ], + [ + "advanced-circuit", + 100 + ], + [ + "iron-gear-wheel", + 100 + ] + ], + "result": "centrifuge", + "requester_paste_multiplier": 10 + }, + "uranium-processing": { + "type": "recipe", + "name": "uranium-processing", + "energy_required": 10, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "uranium-ore", + 10 + ] + ], + "icon": "factorio-data/graphics/icons/uranium-processing.png", + "icon_size": 32, + "subgroup": "raw-material", + "order": "k[uranium-processing]", + "results": [ + { + "name": "uranium-235", + "probability": 0.007, + "amount": 1 + }, + { + "name": "uranium-238", + "probability": 0.993, + "amount": 1 + } + ] + }, + "kovarex-enrichment-process": { + "type": "recipe", + "name": "kovarex-enrichment-process", + "energy_required": 50, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "uranium-235", + 40 + ], + [ + "uranium-238", + 5 + ] + ], + "icon": "factorio-data/graphics/icons/kovarex-enrichment-process.png", + "icon_size": 32, + "subgroup": "intermediate-product", + "order": "r[uranium-processing]-c[kovarex-enrichment-process]", + "main_product": "", + "results": [ + { + "name": "uranium-235", + "amount": 41 + }, + { + "name": "uranium-238", + "amount": 2 + } + ], + "allow_decomposition": false + }, + "nuclear-fuel": { + "type": "recipe", + "name": "nuclear-fuel", + "energy_required": 60, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "uranium-235", + 1 + ], + [ + "rocket-fuel", + 1 + ] + ], + "icon": "factorio-data/graphics/icons/nuclear-fuel.png", + "icon_size": 32, + "result": "nuclear-fuel" + }, + "nuclear-fuel-reprocessing": { + "type": "recipe", + "name": "nuclear-fuel-reprocessing", + "energy_required": 50, + "enabled": false, + "category": "centrifuging", + "ingredients": [ + [ + "used-up-uranium-fuel-cell", + 5 + ] + ], + "icon": "factorio-data/graphics/icons/nuclear-fuel-reprocessing.png", + "icon_size": 32, + "subgroup": "intermediate-product", + "order": "r[uranium-processing]-b[nuclear-fuel-reprocessing]", + "main_product": "", + "results": [ + { + "name": "uranium-238", + "amount": 3 + } + ], + "allow_decomposition": false + }, + "uranium-fuel-cell": { + "type": "recipe", + "name": "uranium-fuel-cell", + "energy_required": 10, + "enabled": false, + "ingredients": [ + [ + "iron-plate", + 10 + ], + [ + "uranium-235", + 1 + ], + [ + "uranium-238", + 19 + ] + ], + "result": "uranium-fuel-cell", + "result_count": 10 + }, + "heat-exchanger": { + "type": "recipe", + "name": "heat-exchanger", + "energy_required": 3, + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 10 + ], + [ + "copper-plate", + 100 + ], + [ + "pipe", + 10 + ] + ], + "result": "heat-exchanger" + }, + "heat-pipe": { + "type": "recipe", + "name": "heat-pipe", + "energy_required": 1, + "enabled": false, + "ingredients": [ + [ + "steel-plate", + 10 + ], + [ + "copper-plate", + 20 + ] + ], + "result": "heat-pipe" + }, + "steam-turbine": { + "type": "recipe", + "name": "steam-turbine", + "enabled": false, + "energy_required": 3, + "ingredients": [ + [ + "iron-gear-wheel", + 50 + ], + [ + "copper-plate", + 50 + ], + [ + "pipe", + 20 + ] + ], + "result": "steam-turbine" + }, + "laser-turret": { + "type": "recipe", + "name": "laser-turret", + "enabled": false, + "energy_required": 20, + "ingredients": [ + [ + "steel-plate", + 20 + ], + [ + "electronic-circuit", + 20 + ], + [ + "battery", + 12 + ] + ], + "result": "laser-turret" + }, + "flamethrower-turret": { + "type": "recipe", + "name": "flamethrower-turret", + "enabled": false, + "energy_required": 20, + "ingredients": [ + [ + "steel-plate", + 30 + ], + [ + "iron-gear-wheel", + 15 + ], + [ + "pipe", + 10 + ], + [ + "engine-unit", + 5 + ] + ], + "result": "flamethrower-turret" + }, + "artillery-turret": { + "type": "recipe", + "name": "artillery-turret", + "enabled": false, + "energy_required": 40, + "ingredients": [ + [ + "steel-plate", + 60 + ], + [ + "concrete", + 60 + ], + [ + "iron-gear-wheel", + 40 + ], + [ + "advanced-circuit", + 20 + ] + ], + "result": "artillery-turret" + }, + "fill-water-barrel": { + "type": "recipe", + "name": "fill-water-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.water" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-water-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/water.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "water", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "water-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-water-barrel": { + "type": "recipe", + "name": "empty-water-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.water" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-water-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0, + "g": 0.34, + "b": 0.6, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 0.7, + "g": 0.7, + "b": 0.7, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/water.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "water-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "water", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-crude-oil-barrel": { + "type": "recipe", + "name": "fill-crude-oil-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.crude-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-crude-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/crude-oil.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "crude-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "crude-oil-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-crude-oil-barrel": { + "type": "recipe", + "name": "empty-crude-oil-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.crude-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-crude-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0, + "g": 0, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/crude-oil.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "crude-oil-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "crude-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-heavy-oil-barrel": { + "type": "recipe", + "name": "fill-heavy-oil-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.heavy-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-heavy-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/heavy-oil.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "heavy-oil-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-heavy-oil-barrel": { + "type": "recipe", + "name": "empty-heavy-oil-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.heavy-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-heavy-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0.5, + "g": 0.04, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 0.85, + "g": 0.6, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/heavy-oil.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "heavy-oil-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "heavy-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-light-oil-barrel": { + "type": "recipe", + "name": "fill-light-oil-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.light-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-light-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/light-oil.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "light-oil-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-light-oil-barrel": { + "type": "recipe", + "name": "empty-light-oil-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.light-oil" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-light-oil-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0.57, + "g": 0.33, + "b": 0, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 1, + "g": 0.73, + "b": 0.07, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/light-oil.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "light-oil-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "light-oil", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-petroleum-gas-barrel": { + "type": "recipe", + "name": "fill-petroleum-gas-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.petroleum-gas" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-petroleum-gas-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/petroleum-gas.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "petroleum-gas-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-petroleum-gas-barrel": { + "type": "recipe", + "name": "empty-petroleum-gas-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.petroleum-gas" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-petroleum-gas-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0.3, + "g": 0.1, + "b": 0.3, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 0.8, + "g": 0.8, + "b": 0.8, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/petroleum-gas.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "petroleum-gas-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "petroleum-gas", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-lubricant-barrel": { + "type": "recipe", + "name": "fill-lubricant-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.lubricant" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-lubricant-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/lubricant.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "lubricant", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "lubricant-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-lubricant-barrel": { + "type": "recipe", + "name": "empty-lubricant-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.lubricant" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-lubricant-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0.15, + "g": 0.32, + "b": 0.03, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 0.43, + "g": 0.75, + "b": 0.31, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/lubricant.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "lubricant-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "lubricant", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "fill-sulfuric-acid-barrel": { + "type": "recipe", + "name": "fill-sulfuric-acid-barrel", + "localised_name": [ + "recipe-name.fill-barrel", + [ + "fluid-name.sulfuric-acid" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "fill-barrel", + "order": "b[fill-sulfuric-acid-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-side-mask.png", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-fill-top-mask.png", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/sulfuric-acid.png", + "scale": 0.5, + "shift": [ + 4, + -8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "item", + "name": "sulfuric-acid-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + }, + "empty-sulfuric-acid-barrel": { + "type": "recipe", + "name": "empty-sulfuric-acid-barrel", + "localised_name": [ + "recipe-name.empty-filled-barrel", + [ + "fluid-name.sulfuric-acid" + ] + ], + "category": "crafting-with-fluid", + "energy_required": 0.2, + "subgroup": "empty-barrel", + "order": "c[empty-sulfuric-acid-barrel]", + "enabled": false, + "icons": [ + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty.png" + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-side-mask.png", + "tint": { + "r": 0.75, + "g": 0.65, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/barreling/barrel-empty-top-mask.png", + "tint": { + "r": 0.7, + "g": 1, + "b": 0.1, + "a": 0.75 + } + }, + { + "icon": "factorio-data/graphics/icons/fluid/sulfuric-acid.png", + "scale": 0.5, + "shift": [ + 7, + 8 + ] + } + ], + "icon_size": 32, + "ingredients": [ + { + "type": "item", + "name": "sulfuric-acid-barrel", + "amount": 1 + } + ], + "results": [ + { + "type": "fluid", + "name": "sulfuric-acid", + "amount": 50 + }, + { + "type": "item", + "name": "empty-barrel", + "amount": 1 + } + ], + "hide_from_stats": true, + "allow_decomposition": false + } +} \ No newline at end of file diff --git a/src/bundles/tileBundle.json b/src/bundles/tileBundle.json new file mode 100644 index 00000000..e15c9477 --- /dev/null +++ b/src/bundles/tileBundle.json @@ -0,0 +1,2287 @@ +{ + "stone-path": { + "type": "tile", + "name": "stone-path", + "needs_correction": false, + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "stone-brick" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.3, + "layer": 60, + "decorative_removal_probability": 0.15, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-1.png", + "count": 16, + "size": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-1.png", + "count": 16, + "size": 1, + "scale": 0.5 + } + }, + { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-2.png", + "count": 4, + "size": 2, + "probability": 0.39, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-2.png", + "count": 16, + "size": 2, + "probability": 0.39, + "scale": 0.5 + } + }, + { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-4.png", + "count": 4, + "size": 4, + "probability": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-4.png", + "count": 16, + "size": 4, + "probability": 1, + "scale": 0.5 + } + } + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-inner-corner.png", + "count": 16, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-inner-corner.png", + "count": 16, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-outer-corner.png", + "count": 8, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-outer-corner.png", + "count": 8, + "tall": true, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-side.png", + "count": 16, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-side.png", + "count": 16, + "tall": true, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-u.png", + "count": 8, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-u.png", + "count": 8, + "tall": true, + "scale": 0.5 + } + }, + "o_transition": { + "picture": "factorio-data/graphics/terrain/stone-path/stone-path-o.png", + "count": 4, + "hr_version": { + "picture": "factorio-data/graphics/terrain/stone-path/hr-stone-path-o.png", + "count": 4, + "scale": 0.5 + } + } + }, + "transitions": [ + { + "to_tiles": [ + "water", + "deepwater", + "water-green", + "deepwater-green" + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 0, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 0, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 288, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 576, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 576, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 1152, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 4, + "line_length": 4, + "x": 544, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 864, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 4, + "line_length": 4, + "x": 2176, + "y": 1728, + "scale": 0.5 + } + }, + "o_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 1152, + "tall": false, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 2304, + "tall": false, + "scale": 0.5 + } + }, + "o_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 4, + "line_length": 4, + "x": 544, + "y": 1152, + "tall": false, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 2304, + "tall": false, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 1152, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path.png", + "count": 4, + "line_length": 4, + "x": 2176, + "y": 2304, + "scale": 0.5 + } + } + } + ], + "transitions_between_transitions": [ + { + "to_tiles": [ + "water", + "deepwater", + "water-green", + "deepwater-green" + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 0, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 0, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 288, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 576, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 576, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 1152, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 1, + "line_length": 1, + "x": 0, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 1, + "line_length": 1, + "x": 0, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 1, + "line_length": 1, + "x": 544, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 1, + "line_length": 1, + "x": 1088, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/stone-path-transitions.png", + "count": 1, + "line_length": 1, + "x": 1088, + "y": 864, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-stone-path-transitions.png", + "count": 1, + "line_length": 1, + "x": 2176, + "y": 1728, + "scale": 0.5 + } + } + } + ], + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 50, + "g": 50, + "b": 50 + }, + "ageing": 0, + "vehicle_friction_modifier": 1.1 + }, + "concrete": { + "type": "tile", + "name": "concrete", + "needs_correction": false, + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "concrete" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.4, + "layer": 61, + "transition_overlay_layer_offset": 2, + "decorative_removal_probability": 0.25, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 1 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 2, + "probability": 0.39 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 4, + "probability": 1 + } + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-inner-corner.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-inner-corner.png", + "count": 16, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-inner-corner-mask.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-inner-corner-mask.png", + "count": 16, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-outer-corner.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-outer-corner.png", + "count": 8, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-outer-corner-mask.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-outer-corner-mask.png", + "count": 8, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-side.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-side.png", + "count": 16, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-side-mask.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-side-mask.png", + "count": 16, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-u.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-u.png", + "count": 8, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-u-mask.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-u-mask.png", + "count": 8, + "scale": 0.5 + } + }, + "o_transition": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-o.png", + "count": 4, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-o.png", + "count": 4, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-o-mask.png", + "count": 4, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-o-mask.png", + "count": 4, + "scale": 0.5 + } + }, + "material_background": { + "picture": "factorio-data/graphics/terrain/concrete/concrete.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete.png", + "count": 8, + "scale": 0.5 + } + } + }, + "transitions": [ + { + "to_tiles": [ + "water", + "deepwater", + "water-green", + "deepwater-green" + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 0, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 0, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 288, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 576, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 576, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 1152, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 544, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 864, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 2176, + "y": 1728, + "scale": 0.5 + } + }, + "o_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 1152, + "tall": false, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 2304, + "tall": false, + "scale": 0.5 + } + }, + "o_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 544, + "y": 1152, + "tall": false, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 2304, + "tall": false, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 1152, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 2176, + "y": 2304, + "scale": 0.5 + } + } + } + ], + "transitions_between_transitions": [ + { + "to_tiles": [ + "water", + "deepwater", + "water-green", + "deepwater-green" + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 0, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 0, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 288, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 576, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 576, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 1152, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 0, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 0, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 544, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 1088, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 1088, + "y": 864, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 2176, + "y": 1728, + "scale": 0.5 + } + } + } + ], + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 100, + "g": 100, + "b": 100 + }, + "ageing": 0, + "vehicle_friction_modifier": 0.8 + }, + "hazard-concrete-left": { + "type": "tile", + "name": "hazard-concrete-left", + "needs_correction": false, + "next_direction": "hazard-concrete-right", + "transition_merges_with_tile": "concrete", + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "hazard-concrete" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.4, + "layer": 62, + "decorative_removal_probability": 0.25, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 1 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 2, + "probability": 0.39 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 4, + "probability": 1 + } + ], + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-inner-corner-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-inner-corner-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-outer-corner-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-outer-corner-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-side-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-side-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-u-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-u-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-o-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-o-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "material_background": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-left/hazard-concrete-left.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-left/hr-hazard-concrete-left.png", + "count": 8, + "scale": 0.5 + } + } + }, + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 0.5, + "g": 0.5, + "b": 0 + }, + "ageing": 0, + "vehicle_friction_modifier": 0.8 + }, + "hazard-concrete-right": { + "type": "tile", + "name": "hazard-concrete-right", + "needs_correction": false, + "next_direction": "hazard-concrete-left", + "transition_merges_with_tile": "concrete", + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "hazard-concrete" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.4, + "layer": 62, + "decorative_removal_probability": 0.25, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 1 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 2, + "probability": 0.39 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 4, + "probability": 1 + } + ], + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-inner-corner-mask.png", + "count": 1 + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-outer-corner-mask.png", + "count": 1 + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-side-mask.png", + "count": 1 + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-u-mask.png", + "count": 1 + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-o-mask.png", + "count": 1 + }, + "material_background": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-right/hazard-concrete-right.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-right/hr-hazard-concrete-right.png", + "count": 8, + "scale": 0.5 + } + } + }, + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 0.5, + "g": 0.5, + "b": 0 + }, + "ageing": 0, + "vehicle_friction_modifier": 0.8 + }, + "refined-concrete": { + "type": "tile", + "name": "refined-concrete", + "needs_correction": false, + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "refined-concrete" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.5, + "layer": 64, + "transition_overlay_layer_offset": 2, + "decorative_removal_probability": 0.25, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 1 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 2, + "probability": 0.39 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 4, + "probability": 1 + } + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-inner-corner.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-inner-corner.png", + "count": 16, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-inner-corner-mask.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-inner-corner-mask.png", + "count": 16, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-outer-corner.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-outer-corner.png", + "count": 8, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-outer-corner-mask.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-outer-corner-mask.png", + "count": 8, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-side.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-side.png", + "count": 16, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-side-mask.png", + "count": 16, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-side-mask.png", + "count": 16, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-u.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-u.png", + "count": 8, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-u-mask.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-u-mask.png", + "count": 8, + "scale": 0.5 + } + }, + "o_transition": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-o.png", + "count": 4, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-o.png", + "count": 4, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/concrete-o-mask.png", + "count": 4, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-concrete-o-mask.png", + "count": 4, + "scale": 0.5 + } + }, + "material_background": { + "picture": "factorio-data/graphics/terrain/concrete/refined-concrete.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-refined-concrete.png", + "count": 8, + "scale": 0.5 + } + } + }, + "transitions": [ + { + "to_tiles": [ + "water", + "deepwater", + "water-green", + "deepwater-green" + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 0, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 0, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 288, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 576, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 0, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 544, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 8, + "line_length": 8, + "x": 1088, + "y": 576, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 8, + "line_length": 8, + "x": 2176, + "y": 1152, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 544, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 864, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 2176, + "y": 1728, + "scale": 0.5 + } + }, + "o_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 1152, + "tall": false, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 0, + "y": 2304, + "tall": false, + "scale": 0.5 + } + }, + "o_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 544, + "y": 1152, + "tall": false, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 2304, + "tall": false, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete.png", + "count": 4, + "line_length": 4, + "x": 1088, + "y": 1152, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete.png", + "count": 4, + "line_length": 4, + "x": 2176, + "y": 2304, + "scale": 0.5 + } + } + } + ], + "transitions_between_transitions": [ + { + "to_tiles": [ + "water", + "deepwater", + "water-green", + "deepwater-green" + ], + "inner_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 0, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 0, + "tall": true, + "scale": 0.5 + } + }, + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 0, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 0, + "scale": 0.5 + } + }, + "outer_corner": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 288, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 576, + "tall": true, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 288, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 576, + "scale": 0.5 + } + }, + "side": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 0, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 544, + "y": 576, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 1152, + "tall": true, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 1088, + "y": 576, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 3, + "line_length": 3, + "x": 2176, + "y": 1152, + "scale": 0.5 + } + }, + "u_transition": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 0, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 0, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_background": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 544, + "y": 864, + "tall": true, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 1088, + "y": 1728, + "tall": true, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/water-transitions/concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 1088, + "y": 864, + "hr_version": { + "picture": "factorio-data/graphics/terrain/water-transitions/hr-concrete-transitions.png", + "count": 1, + "line_length": 1, + "x": 2176, + "y": 1728, + "scale": 0.5 + } + } + } + ], + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 100, + "g": 100, + "b": 100 + }, + "ageing": 0, + "vehicle_friction_modifier": 0.8 + }, + "refined-hazard-concrete-left": { + "type": "tile", + "name": "refined-hazard-concrete-left", + "needs_correction": false, + "next_direction": "refined-hazard-concrete-right", + "transition_merges_with_tile": "refined-concrete", + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "refined-hazard-concrete" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.5, + "layer": 65, + "decorative_removal_probability": 0.25, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 1 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 2, + "probability": 0.39 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 4, + "probability": 1 + } + ], + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-inner-corner-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-inner-corner-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-outer-corner-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-outer-corner-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-side-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-side-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-u-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-u-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-o-mask.png", + "count": 1, + "hr_version": { + "picture": "factorio-data/graphics/terrain/concrete/hr-hazard-concrete-o-mask.png", + "count": 1, + "scale": 0.5 + } + }, + "material_background": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-left/refined-hazard-concrete-left.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-left/hr-refined-hazard-concrete-left.png", + "count": 8, + "scale": 0.5 + } + } + }, + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 0.5, + "g": 0.5, + "b": 0 + }, + "ageing": 0, + "vehicle_friction_modifier": 0.8 + }, + "refined-hazard-concrete-right": { + "type": "tile", + "name": "refined-hazard-concrete-right", + "needs_correction": false, + "next_direction": "refined-hazard-concrete-left", + "transition_merges_with_tile": "refined-concrete", + "minable": { + "hardness": 0.2, + "mining_time": 0.5, + "result": "refined-hazard-concrete" + }, + "mined_sound": { + "filename": "factorio-data/sound/deconstruct-bricks.ogg" + }, + "collision_mask": [ + "ground-tile" + ], + "walking_speed_modifier": 1.5, + "layer": 65, + "decorative_removal_probability": 0.25, + "variants": { + "main": [ + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 1 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 2, + "probability": 0.39 + }, + { + "picture": "factorio-data/graphics/terrain/concrete/concrete-dummy.png", + "count": 1, + "size": 4, + "probability": 1 + } + ], + "inner_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-inner-corner-mask.png", + "count": 1 + }, + "outer_corner_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-outer-corner-mask.png", + "count": 1 + }, + "side_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-side-mask.png", + "count": 1 + }, + "u_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-u-mask.png", + "count": 1 + }, + "o_transition_mask": { + "picture": "factorio-data/graphics/terrain/concrete/hazard-concrete-o-mask.png", + "count": 1 + }, + "material_background": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-right/refined-hazard-concrete-right.png", + "count": 8, + "hr_version": { + "picture": "factorio-data/graphics/terrain/hazard-concrete-right/hr-refined-hazard-concrete-right.png", + "count": 8, + "scale": 0.5 + } + } + }, + "walking_sound": [ + { + "filename": "factorio-data/sound/walking/concrete-01.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-02.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-03.ogg", + "volume": 1.2 + }, + { + "filename": "factorio-data/sound/walking/concrete-04.ogg", + "volume": 1.2 + } + ], + "map_color": { + "r": 0.5, + "g": 0.5, + "b": 0 + }, + "ageing": 0, + "vehicle_friction_modifier": 0.8 + } +} \ No newline at end of file diff --git a/src/containers/blueprint.ts b/src/containers/blueprint.ts new file mode 100644 index 00000000..65c7d03e --- /dev/null +++ b/src/containers/blueprint.ts @@ -0,0 +1,342 @@ +import G from '../globals' +import { ZoomPan } from '../zoomPan' +import { WiresContainer } from './wires' +import { UnderlayContainer } from './underlay' +import { EntitySprite } from '../entitySprite' +import { AdjustmentFilter } from '@pixi/filter-adjustment' +import { EntityContainer } from './entity' +import { OverlayContainer } from './overlay' +import { PaintContainer } from './paint' + +export class BlueprintContainer extends PIXI.Container { + + holdingLeftClick: boolean + grid: PIXI.Sprite + wiresContainer: WiresContainer + overlayContainer: OverlayContainer + underlayContainer: UnderlayContainer + entities: PIXI.Container + movingEntityFilter: AdjustmentFilter + entitySprites: PIXI.Container + movementSpeed: number + zoomPan: ZoomPan + holdingRightClick: boolean + lastCursorPos: IPoint + pgOverlay: PIXI.Graphics + hoverContainer: undefined | EntityContainer + movingContainer: undefined | EntityContainer + paintContainer: undefined | PaintContainer + + constructor() { + super() + this.interactive = true + + this.holdingLeftClick = false + this.holdingRightClick = false + this.lastCursorPos = { x: 0, y: 0 } + + this.movementSpeed = 10 + + this.zoomPan = new ZoomPan(this, G.sizeBPContainer, G.positionBPContainer, { + width: G.app.renderer.width, + height: G.app.renderer.height + }, 10) + + this.movingEntityFilter = new AdjustmentFilter({ red: 0.4, blue: 0.4, green: 1 }) + + const ggrid = new PIXI.Graphics() + for (let i = 0, l = G.sizeBPContainer.width; i < l; i += G.cellSize) { + for (let j = 0, l2 = G.sizeBPContainer.height; j < l2; j += G.cellSize) { + if ((i + j) / G.cellSize % 2) { + ggrid.beginFill(0x303030) + } else { + ggrid.beginFill(0x181818) + } + ggrid.drawRect(i, j, G.cellSize, G.cellSize) + ggrid.endFill() + } + } + this.grid = new PIXI.Sprite(G.app.renderer.generateTexture(ggrid)) + this.grid.interactive = false + this.addChild(this.grid) + + this.pgOverlay = new PIXI.Graphics() + this.pgOverlay.alpha = 0.2 + // this.addChild(this.pgOverlay) + + this.underlayContainer = new UnderlayContainer() + this.addChild(this.underlayContainer) + + this.entitySprites = new PIXI.Container() + this.entitySprites.interactive = false + this.entitySprites.interactiveChildren = false + this.addChild(this.entitySprites) + + this.entities = new PIXI.Container() + this.entities.interactive = false + this.entities.interactiveChildren = true + this.addChild(this.entities) + + this.wiresContainer = new WiresContainer() + this.addChild(this.wiresContainer) + + this.overlayContainer = new OverlayContainer() + this.addChild(this.overlayContainer) + + this.on('pointerdown', this.pointerDownEventHandler) + this.on('pointerup', this.pointerUpEventHandler) + this.on('pointerupoutside', this.pointerUpEventHandler) + this.on('pointermove', this.pointerMoveEventHandler) + + document.addEventListener('wheel', e => { + e.preventDefault() + this.zoomPan.setScaleCenter(G.gridCoordsOfCursor.x * 32, G.gridCoordsOfCursor.y * 32) + const z = Math.sign(-e.deltaY) * 0.1 + this.zoomPan.zoomBy(z, z) + this.zoomPan.updateTransform() + this.updateViewportCulling() + }, false) + + G.app.ticker.add(() => { + const WSXOR = G.keyboard.w !== G.keyboard.s + const ADXOR = G.keyboard.a !== G.keyboard.d + if (WSXOR || ADXOR) { + this.zoomPan.translateBy( + ADXOR ? (G.keyboard.a ? this.movementSpeed : -this.movementSpeed) : 0, + WSXOR ? (G.keyboard.w ? this.movementSpeed : -this.movementSpeed) : 0 + ) + this.zoomPan.updateTransform() + + if (this.updateCursorPosition() && (this.movingContainer || this.paintContainer)) { + (this.movingContainer || this.paintContainer).moveTo({ + x: G.gridCoordsOfCursor.x * 32, + y: G.gridCoordsOfCursor.y * 32 + }) + } + + this.updateViewportCulling() + } + }) + + if (G.renderOnly) { + this.interactiveChildren = false + } + } + + initBP() { + // TODO: maybe check for curved rails as well + for (const entity_number of G.bp.rawEntities.keys()) { + const entity = G.bp.entity(entity_number) + if (entity.name === 'straight-rail') { + const x = Math.abs(entity.position.x) + const y = Math.abs(entity.position.y) + G.railMoveOffset = { + x: x % 2 + 1, + y: y % 2 + 1 + } + break + } + } + + // Render Bp + for (const entity_number of G.bp.rawEntities.keys()) { + this.entities.addChild(new EntityContainer(entity_number, false)) + } + + this.sortEntities() + this.wiresContainer.drawWires() + this.updateOverlay() + this.centerViewport() + + if (G.renderOnly) { + this.cacheAsBitmap = false + this.cacheAsBitmap = true + } + } + + clearData() { + const opt = { children: true } + this.underlayContainer.destroy(opt) + this.entitySprites.destroy(opt) + this.entities.destroy(opt) + this.wiresContainer.destroy(opt) + this.overlayContainer.destroy(opt) + + this.removeChildren() + + this.holdingLeftClick = false + this.holdingRightClick = false + this.hoverContainer = undefined + this.movingContainer = undefined + this.paintContainer = undefined + + this.underlayContainer = new UnderlayContainer() + + this.entitySprites = new PIXI.Container() + this.entitySprites.interactive = false + this.entitySprites.interactiveChildren = false + + this.entities = new PIXI.Container() + this.entities.interactive = false + this.entities.interactiveChildren = true + + this.wiresContainer = new WiresContainer() + + this.overlayContainer = new OverlayContainer() + + this.addChild(this.grid, this.underlayContainer, this.entitySprites, this.entities, this.wiresContainer, this.overlayContainer) + + G.currentMouseState = G.mouseStates.NONE + } + + sortEntities() { + (this.entities.children as EntityContainer[]).sort((a, b) => + ((b.hitArea as PIXI.Rectangle).height - (a.hitArea as PIXI.Rectangle).height) + ); + + (this.entitySprites.children as EntitySprite[]).sort((a, b) => { + if (a.isMoving && !b.isMoving) return 1 + if (b.isMoving && !a.isMoving) return -1 + const dZ = a.zIndex - b.zIndex + if (dZ !== 0) return dZ + const dY = (a.y - a.shift.y) - (b.y - b.shift.y) + if (dY !== 0) return dY + const dO = a.zOrder - b.zOrder + if (dO !== 0) return dO + const dX = (a.x - a.shift.x) - (b.x - b.shift.x) + if (dX !== 0) return dX + return a.id - b.id + }) + } + + updateCursorPosition(mousePosition?: IPoint) { + const mousePositionInBP = { + x: Math.abs(this.position.x - (mousePosition ? mousePosition.x : G.app.renderer.plugins.interaction.mouse.global.x)) + / this.zoomPan.getCurrentScale(), + y: Math.abs(this.position.y - (mousePosition ? mousePosition.y : G.app.renderer.plugins.interaction.mouse.global.y)) + / this.zoomPan.getCurrentScale() + } + const newGridCoordsOfCursor = { + x: (mousePositionInBP.x - mousePositionInBP.x % 32) / 32, + y: (mousePositionInBP.y - mousePositionInBP.y % 32) / 32 + } + if (newGridCoordsOfCursor.x !== G.gridCoordsOfCursor.x || newGridCoordsOfCursor.y !== G.gridCoordsOfCursor.y) { + this.lastCursorPos = { ...(mousePosition ? mousePosition : G.app.renderer.plugins.interaction.mouse.global) } + G.gridCoordsOfCursor = newGridCoordsOfCursor + G.toolbarContainer.updateGridPos(G.gridCoordsOfCursor) + return true + } + } + + updateOverlay() { + return + const TEMP = G.bp.entityPositionGrid.getAllPositions() + this.pgOverlay.clear() + for (const t of TEMP) { + this.pgOverlay.beginFill(0x0080FF) + this.pgOverlay.drawRect(t.x * 32, t.y * 32, G.cellSize, G.cellSize) + this.pgOverlay.endFill() + } + } + + centerViewport() { + if (G.bp.rawEntities.size === 0) { + this.zoomPan.setPosition(-G.sizeBPContainer.width / 2, -G.sizeBPContainer.height / 2) + this.zoomPan.updateTransform() + return + } + + const TL = G.bp.topLeft() + const TR = G.bp.topRight() + const BL = G.bp.bottomLeft() + + const W = G.bpArea.width / 2 + const H = G.bpArea.height / 2 + + const hor1 = Math.abs(TL.x - W) + const hor2 = TR.x - W + + const ver1 = Math.abs(TL.y - H) + const ver2 = BL.y - H + + this.zoomPan.centerViewPort({ + x: (hor1 + hor2) * 32, + y: (ver1 + ver2) * 32 + }, { + x: (hor1 - hor2) * 16, + y: (ver1 - ver2) * 16 + }) + this.updateViewportCulling() + } + + updateViewportCulling() { + cullChildren(this.entitySprites.children) + cullChildren(this.overlayContainer.overlay.children) + + function cullChildren(children: PIXI.DisplayObject[]) { + for (const c of children) { + const b = c.getBounds() + c.renderable = + b.x + b.width > G.positionBPContainer.x && + b.y + b.height > G.positionBPContainer.y && + b.x < G.app.renderer.width && + b.y < G.app.renderer.height + } + } + } + + pointerMoveEventHandler(e: PIXI.interaction.InteractionEvent) { + // Update the position here to avoid calling all pointermove eventHandlers with + // G.app.renderer.plugins.interaction.moveWhenInside set to false + const newCursorPos = e.data.getLocalPosition(e.currentTarget) + if (this.movingContainer || this.paintContainer) { + (this.movingContainer || this.paintContainer).moveTo(newCursorPos) + } + + if (G.keyboard.w !== G.keyboard.s || G.keyboard.a !== G.keyboard.d) return + const newGridCoordsOfCursor = { + x: (newCursorPos.x - newCursorPos.x % 32) / 32, + y: (newCursorPos.y - newCursorPos.y % 32) / 32 + } + if (newGridCoordsOfCursor.x !== G.gridCoordsOfCursor.x || newGridCoordsOfCursor.y !== G.gridCoordsOfCursor.y) { + if (this.hoverContainer) { + if (this.holdingRightClick) this.hoverContainer.removeContainer() + if (this.holdingLeftClick && G.keyboard.shift) this.hoverContainer.pasteRecipe() + } + G.gridCoordsOfCursor = newGridCoordsOfCursor + G.toolbarContainer.updateGridPos(G.gridCoordsOfCursor) + } + if (G.currentMouseState === G.mouseStates.PANNING) { + const dX = G.app.renderer.plugins.interaction.mouse.global.x - this.lastCursorPos.x + const dY = G.app.renderer.plugins.interaction.mouse.global.y - this.lastCursorPos.y + this.zoomPan.translateBy(dX, dY) + this.zoomPan.updateTransform() + this.updateViewportCulling() + } + this.lastCursorPos = { ...G.app.renderer.plugins.interaction.mouse.global } + } + + pointerDownEventHandler(e: PIXI.interaction.InteractionEvent) { + if (G.currentMouseState === G.mouseStates.NONE) { + if (e.data.button === 0) { + if (!G.openedGUIWindow && !G.keyboard.shift) { + G.currentMouseState = G.mouseStates.PANNING + } + this.holdingLeftClick = true + } else if (e.data.button === 2) { + this.holdingRightClick = true + } + } + } + + pointerUpEventHandler(e: PIXI.interaction.InteractionEvent) { + if (e.data.button === 0) { + if (G.currentMouseState === G.mouseStates.PANNING) { + G.currentMouseState = G.mouseStates.NONE + } + this.holdingLeftClick = false + } else if (e.data.button === 2) { + this.holdingRightClick = false + } + } +} diff --git a/src/containers/editEntity.ts b/src/containers/editEntity.ts new file mode 100644 index 00000000..6e8de259 --- /dev/null +++ b/src/containers/editEntity.ts @@ -0,0 +1,167 @@ +import factorioData from '../factorio-data/factorioData' +import G from '../globals' +import { InventoryContainer } from './inventory' +import { EntityContainer } from './entity' + +export class EditEntityContainer extends PIXI.Container { + + content: PIXI.Container + itemTooltip: PIXI.Text + iconGutter = 32 + inventoryActiveGroup: PIXI.Sprite + inventoryGroup: Map = new Map() + iWidth = 32 * 12 + iHeight = 32 * 13 + + constructor() { + super() + + this.visible = false + this.interactive = true + + this.setPosition() + window.addEventListener('resize', () => this.setPosition(), false) + + const background = new PIXI.Sprite(PIXI.Texture.WHITE) + background.width = this.iWidth + background.height = this.iHeight + background.tint = 0x3A3A3A + background.alpha = 0.9 + this.addChild(background) + + this.content = new PIXI.Container() + this.addChild(this.content) + } + + setPosition() { + this.position.set( + G.app.renderer.width / 2 - this.iWidth / 2, + G.app.renderer.height / 2 - this.iHeight / 2 + ) + } + + // TODO: Refactor, optimize and make a layout system for this + create(entity_number: number) { + this.content.removeChildren() + const entity = G.bp.entity(entity_number) + + const cc = entity.entityData.crafting_categories + if (cc && !cc.includes('rocket-building') && !cc.includes('smelting')) { + const recipeContainer = new PIXI.Container() + const background = new PIXI.Sprite(PIXI.Texture.WHITE) + background.anchor.set(0.5, 0.5) + background.width = 32 + background.height = 32 + background.tint = 0x9E9E9E + recipeContainer.addChild(background) + if (entity.recipe) recipeContainer.addChild(InventoryContainer.createIcon(factorioData.getItem(entity.recipe))) + recipeContainer.position.set( + this.iWidth / 2 + 16, + this.iHeight / 2 - 18 + ) + recipeContainer.interactive = true + recipeContainer.buttonMode = true + + recipeContainer.on('pointerdown', (e: PIXI.interaction.InteractionEvent) => { + e.stopPropagation() + if (e.data.button === 0) { + G.inventoryContainer.toggle(entity.acceptedRecipes, name => { + G.openedGUIWindow = this + if (entity.recipe !== name) { + EntityContainer.mappings.get(entity_number).changeRecipe(name) + this.create(entity_number) + } + }) + } else if (e.data.button === 2) { + if (entity.recipe) { + EntityContainer.mappings.get(entity_number).changeRecipe(undefined) + this.create(entity_number) + } + } + }) + this.content.addChild(recipeContainer) + + const recipeText = new PIXI.Text('Recipe ') + recipeText.anchor.set(1, 0.5) + recipeText.position.set( + this.iWidth / 2, + this.iHeight / 2 - 18 + ) + recipeText.style.fill = 0xFFFFFF + this.content.addChild(recipeText) + } + + if (entity.entityData.module_specification) { + const moduleContainer = new PIXI.Container() + moduleContainer.position.set( + this.iWidth / 2 + 16, + this.iHeight / 2 + 18 + ) + const slots = entity.entityData.module_specification.module_slots + const modules = entity.modulesList + for (let i = 0; i < slots; i++) { + const slot = new PIXI.Container() + slot.position.set(i * 36, 0) + slot.interactive = true + slot.buttonMode = true + slot.on('pointerdown', (e: PIXI.interaction.InteractionEvent) => { + e.stopPropagation() + if (e.data.button === 0) { + G.inventoryContainer.toggle(entity.acceptedModules, name => { + G.openedGUIWindow = this + if (modules && modules[i] !== name) { + modules[modules.length] = name + entity.modulesList = modules + } else { + entity.modulesList = [name] + } + EntityContainer.mappings.get(entity_number).redrawEntityInfo() + this.create(entity_number) + }) + } else if (e.data.button === 2) { + if (modules && modules[i]) { + modules.splice(i, 1) + entity.modulesList = modules + EntityContainer.mappings.get(entity_number).redrawEntityInfo() + this.create(entity_number) + } + } + }) + + const background = new PIXI.Sprite(PIXI.Texture.WHITE) + background.anchor.set(0.5, 0.5) + background.width = 32 + background.height = 32 + background.tint = 0x9E9E9E + slot.addChild(background) + + if (modules && modules[i]) slot.addChild(InventoryContainer.createIcon(factorioData.getItem(modules[i]))) + + moduleContainer.addChild(slot) + } + this.content.addChild(moduleContainer) + + const recipeText = new PIXI.Text('Modules ') + recipeText.anchor.set(1, 0.5) + recipeText.position.set( + this.iWidth / 2, + this.iHeight / 2 + 18 + ) + recipeText.style.fill = 0xFFFFFF + this.content.addChild(recipeText) + } + + if (this.content.children.length !== 0) { + this.visible = true + G.openedGUIWindow = this + } + } + + close() { + if (this.visible && G.openedGUIWindow !== this) { + G.openedGUIWindow.close() + } + this.visible = false + G.openedGUIWindow = undefined + } +} diff --git a/src/containers/entity.ts b/src/containers/entity.ts new file mode 100644 index 00000000..7e55d8f2 --- /dev/null +++ b/src/containers/entity.ts @@ -0,0 +1,427 @@ +import G from '../globals' +import factorioData from '../factorio-data/factorioData' +import { updateGroups } from '../updateGroups' +import { isNumber } from 'util' +import { EntitySprite } from '../entitySprite' +import { UnderlayContainer } from './underlay' + +export class EntityContainer extends PIXI.Container { + static mappings: Map = new Map() + + static getGridPosition(containerPosition: IPoint) { + return { + x: Math.round(containerPosition.x / 32 * 10) / 10, + y: Math.round(containerPosition.y / 32 * 10) / 10 + } + } + + static getPositionFromData(currentPos: IPoint, size: IPoint) { + const res = { x: 0, y: 0 } + if (size.x % 2 === 0) { + const npx = currentPos.x - currentPos.x % 16 + res.x = npx + (npx % 32 === 0 ? 0 : 16) + } else { + res.x = currentPos.x - currentPos.x % 32 + 16 + } + if (size.y % 2 === 0) { + const npy = currentPos.y - currentPos.y % 16 + res.y = npy + (npy % 32 === 0 ? 0 : 16) + } else { + res.y = currentPos.y - currentPos.y % 32 + 16 + } + return res + } + + static isContainerOutOfBpArea(newPos: IPoint, size: IPoint) { + return newPos.x - size.x / 2 < 0 || + newPos.y - size.y / 2 < 0 || + newPos.x + size.x / 2 > G.bpArea.width || + newPos.y + size.y / 2 > G.bpArea.height + } + + static getParts(entity: any, hr: boolean, ignore_connections?: boolean): EntitySprite[] { + const anims = factorioData.getSpriteData(entity, hr, ignore_connections ? undefined : G.bp) + + // const icon = new PIXI.Sprite(G.iconSprites['icon:' + factorioData.getEntity(entity.name).icon.split(':')[1]]) + // icon.x -= 16 + // icon.y -= 16 + // return [icon] + + const parts: EntitySprite[] = [] + for (let i = 0, l = anims.length; i < l; i++) { + const img = new EntitySprite(anims[i]) + + if (entity.name === 'straight-rail' || entity.name === 'curved-rail') { + if (i < 2) { + img.zIndex = -10 + } else if (i < 4) { + img.zIndex = -9 + } else { + img.zIndex = -8 + } + } else if (entity.type === 'transport-belt' || entity.name === 'heat-pipe') { + img.zIndex = i === 0 ? -7 : -6 + } else { + img.zIndex = 0 + } + img.zOrder = i + + parts.push(img) + } + + return parts + } + + entity_number: number + areaVisualization: PIXI.Sprite | PIXI.Sprite[] | undefined + entityInfo: PIXI.Container + entitySprites: EntitySprite[] + + constructor(entity_number: number, sort = true) { + super() + this.entity_number = entity_number + + EntityContainer.mappings.set(entity_number, this) + + const entity = G.bp.entity(entity_number) + this.position.set( + entity.position.x * 32, + entity.position.y * 32 + ) + + this.interactive = true + this.interactiveChildren = false + this.buttonMode = true + + this.entitySprites = [] + + this.areaVisualization = G.BPC.underlayContainer.createNewArea(entity.name, this.position) + this.entityInfo = G.BPC.overlayContainer.createEntityInfo(this.entity_number, this.position) + + this.on('pointerdown', this.pointerDownEventHandler) + // this.on('pointermove', this.pointerMoveEventHandler) + this.on('pointerover', this.pointerOverEventHandler) + this.on('pointerout', this.pointerOutEventHandler) + + this.redraw(false, sort) + } + + destroy() { + if (G.editEntityContainer.visible) G.editEntityContainer.close() + + for (const s of this.entitySprites) s.destroy() + + super.destroy() + EntityContainer.mappings.delete(this.entity_number) + + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => s.destroy()) + G.BPC.overlayContainer.hideCursorBox() + G.BPC.overlayContainer.hideUndergroundLines() + + if (this.entityInfo) this.entityInfo.destroy() + } + + checkBuildable() { + const position = EntityContainer.getGridPosition(this.position) + const entity = G.bp.entity(this.entity_number) + if (!EntityContainer.isContainerOutOfBpArea(position, entity.size) && + G.bp.entityPositionGrid.checkNoOverlap(entity.name, entity.direction, position) + ) { + G.BPC.movingEntityFilter.red = 0.4 + G.BPC.movingEntityFilter.green = 1 + } else { + G.BPC.movingEntityFilter.red = 1 + G.BPC.movingEntityFilter.green = 0.4 + } + } + + rotate() { + const offset = { + x: (this.x / 16 - G.gridCoords16.x) === 0 ? 0.5 : -0.5, + y: (this.y / 16 - G.gridCoords16.y) === 0 ? 0.5 : -0.5 + } + const entity = G.bp.entity(this.entity_number) + let otherEntity + if (G.currentMouseState === G.mouseStates.NONE && entity.type === 'underground-belt') { + otherEntity = G.bp.entityPositionGrid.findEntityWithSameNameAndDirection( + entity.name, entity.direction, entity.position, + entity.directionType === 'input' ? entity.direction : (entity.direction + 4) % 8, + entity.entityData.max_distance + ) + if (isNumber(otherEntity)) { + const oe = G.bp.entity(otherEntity) + if (oe.directionType === entity.directionType) { + otherEntity = undefined + } else { + oe.rotate(G.currentMouseState === G.mouseStates.NONE, { x: 0, y: 0 }, false) + EntityContainer.mappings.get(otherEntity).redraw() + } + } + } + + if (G.bp.entity(this.entity_number).rotate(G.currentMouseState === G.mouseStates.NONE, offset, true, otherEntity)) { + const entity = G.bp.entity(this.entity_number) + if (G.currentMouseState === G.mouseStates.MOVING && entity.size.x !== entity.size.y) { + this.x += offset.x * 32 + this.y += offset.y * 32 + const pos = EntityContainer.getPositionFromData(this.position, entity.size) + this.position.set(pos.x, pos.y) + + G.BPC.overlayContainer.updateCursorBoxPosition(this.position) + } + + this.redraw(G.currentMouseState === G.mouseStates.MOVING) + if (G.currentMouseState === G.mouseStates.NONE) this.redrawSurroundingEntities() + + G.BPC.overlayContainer.updateCursorBoxSize(entity.size.x, entity.size.y) + this.updateUndergroundLines() + + if (G.BPC.movingContainer === this) this.checkBuildable() + + this.redrawEntityInfo() + G.BPC.wiresContainer.update(this.entity_number) + } + } + + updateUndergroundLines() { + const entity = G.bp.entity(this.entity_number) + G.BPC.overlayContainer.updateUndergroundLines( + entity.name, + { x: this.position.x / 32, y: this.position.y / 32 }, + entity.direction, + entity.directionType === 'output' || entity.name === 'pipe-to-ground' ? (entity.direction + 4) % 8 : entity.direction + ) + } + + pointerDownEventHandler(e: PIXI.interaction.InteractionEvent) { + console.log(G.bp.entity(this.entity_number).toJS()) + if (e.data.button === 0) { + if (G.currentMouseState === G.mouseStates.NONE && !G.openedGUIWindow && !G.keyboard.shift) { + G.editEntityContainer.create(this.entity_number) + } + if (G.keyboard.shift) this.pasteRecipe() + } else if (e.data.button === 1) { + if (this !== G.BPC.movingContainer && G.currentMouseState === G.mouseStates.NONE) { + G.bp.entityPositionGrid.removeTileData(this.entity_number, false) + this.redraw(true) + this.redrawSurroundingEntities() + G.BPC.movingContainer = this + G.currentMouseState = G.mouseStates.MOVING + + // Move container to cursor + const newPosition = e.data.getLocalPosition(this.parent) + const pos = EntityContainer.getPositionFromData(newPosition, G.bp.entity(this.entity_number).size) + + if (this.position.x !== pos.x || this.position.y !== pos.y) { + this.position.set(pos.x, pos.y) + this.updateVisualStuff() + } + + G.gridCoords16 = { + x: (newPosition.x - newPosition.x % 16) / 16, + y: (newPosition.y - newPosition.y % 16) / 16 + } + + for (const s of this.entitySprites) s.moving = true + G.BPC.sortEntities() + G.BPC.underlayContainer.activateRelatedAreas(G.bp.entity(this.entity_number).name) + + G.BPC.updateOverlay() + return + } + if (this === G.BPC.movingContainer && G.currentMouseState === G.mouseStates.MOVING) { + this.placeEntityContainerDown() + } + } else if (e.data.button === 2 && G.currentMouseState === G.mouseStates.NONE) { + if (G.keyboard.shift) { + G.copyData.recipe = G.bp.entity(this.entity_number).recipe + } else { + G.BPC.holdingRightClick = true + this.removeContainer() + } + } + } + + changeRecipe(recipeName: string) { + const entity = G.bp.entity(this.entity_number) + entity.recipe = recipeName + this.redrawEntityInfo() + if (entity.name === 'chemical-plant' || entity.assemblerCraftsWithFluid || G.bp.entity(this.entity_number).assemblerCraftsWithFluid) { + this.redraw() + this.redrawSurroundingEntities() + } + } + + pasteRecipe() { + const entity = G.bp.entity(this.entity_number) + if (!entity.entityData.crafting_categories) return + const RECIPE = G.copyData.recipe && entity.acceptedRecipes.includes(G.copyData.recipe) ? G.copyData.recipe : undefined + if (entity.recipe !== RECIPE) this.changeRecipe(RECIPE) + } + + redrawEntityInfo() { + const entity = G.bp.entity(this.entity_number) + if (entity.entityData.module_specification || entity.type === 'splitter' || + entity.entityData.crafting_categories || entity.type === 'mining-drill' || + entity.type === 'boiler' || entity.type === 'generator' || + entity.name === 'pump' || entity.name === 'offshore-pump' || + entity.name === 'arithmetic-combinator' || entity.name === 'decider-combinator' + ) { + if (this.entityInfo) this.entityInfo.destroy() + this.entityInfo = G.BPC.overlayContainer.createEntityInfo(this.entity_number, this.position) + } + } + + updateVisualStuff() { + for (const s of this.entitySprites) s.setPosition(this.position) + + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => s.position.copy(this.position)) + + if (this.entityInfo) this.entityInfo.position = this.position + + G.BPC.overlayContainer.updateCursorBoxPosition(this.position) + G.BPC.overlayContainer.updateUndergroundLinesPosition(this.position) + this.updateUndergroundLines() + + G.BPC.wiresContainer.update(this.entity_number) + + this.checkBuildable() + } + + removeContainer() { + G.BPC.wiresContainer.remove(this.entity_number) + G.bp.entityPositionGrid.removeTileData(this.entity_number, false) + this.redrawSurroundingEntities() + G.bp.removeEntity(this.entity_number, + entity_number => EntityContainer.mappings.get(entity_number).redraw() + ) + G.BPC.hoverContainer = undefined + + G.BPC.updateOverlay() + this.destroy() + } + + // pointerMoveEventHandler(e: PIXI.interaction.InteractionEvent) { + // this.moveTo(e.data.getLocalPosition(this.parent)) + // } + + moveTo(newPosition: IPoint) { + if (G.BPC.movingContainer === this && G.currentMouseState === G.mouseStates.MOVING) { + const newCursorPos = { + x: (newPosition.x - newPosition.x % 16) / 16, + y: (newPosition.y - newPosition.y % 16) / 16 + } + if (newCursorPos.x !== G.gridCoords16.x || newCursorPos.y !== G.gridCoords16.y) { + const entity = G.bp.entity(this.entity_number) + switch (entity.name) { + case 'straight-rail': + case 'curved-rail': + case 'train-stop': + this.x = newPosition.x - (newPosition.x + G.railMoveOffset.x * 32) % 64 + 32 + this.y = newPosition.y - (newPosition.y + G.railMoveOffset.y * 32) % 64 + 32 + break + default: + const pos = EntityContainer.getPositionFromData(newPosition, entity.size) + this.position.set(pos.x, pos.y) + } + + this.updateVisualStuff() + + G.gridCoords16 = newCursorPos + } + } + } + + pointerOverEventHandler() { + // Pointer over is sometimes getting called before pointer out + if (G.BPC.hoverContainer && G.BPC.hoverContainer !== this) G.BPC.hoverContainer.pointerOutEventHandler() + if (!G.BPC.movingContainer && !G.BPC.paintContainer) { + G.BPC.hoverContainer = this + + const entity = G.bp.entity(this.entity_number) + G.BPC.overlayContainer.updateCursorBoxSize(entity.size.x, entity.size.y) + G.BPC.overlayContainer.updateCursorBoxPosition(this.position) + G.BPC.overlayContainer.showCursorBox() + G.BPC.overlayContainer.updateUndergroundLinesPosition(this.position) + this.updateUndergroundLines() + + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => s.visible = true) + } + } + + pointerOutEventHandler() { + if (!G.BPC.movingContainer && !G.BPC.paintContainer && G.BPC.hoverContainer === this) { + G.BPC.hoverContainer = undefined + G.BPC.overlayContainer.hideCursorBox() + G.BPC.overlayContainer.hideUndergroundLines() + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => s.visible = false) + } + } + + placeEntityContainerDown() { + const entity = G.bp.entity(this.entity_number) + const position = EntityContainer.getGridPosition(this.position) + if (EntityContainer.isContainerOutOfBpArea(position, entity.size)) return + if (G.currentMouseState === G.mouseStates.MOVING && entity.move(position)) { + G.BPC.movingContainer = undefined + G.currentMouseState = G.mouseStates.NONE + + for (const s of this.entitySprites) s.moving = false + + this.redraw(false) + this.redrawSurroundingEntities() + + G.BPC.underlayContainer.deactivateActiveAreas() + + G.BPC.updateOverlay() + } + } + + redrawSurroundingEntities() { + const entity = G.bp.entity(this.entity_number) + const redrawnEntities: number[] = [] + for (const updateGroup of updateGroups) { + const j = updateGroup.is.indexOf(entity.name) + if (j !== -1) { + if (entity.name === 'straight-rail') { + G.bp.entityPositionGrid.foreachOverlap(entity.getArea(), (entnr: number) => { + const ent = G.bp.entity(entnr) + if (ent.name === 'gate' && !redrawnEntities.includes(entnr)) { + EntityContainer.mappings.get(ent.entity_number).redraw() + redrawnEntities.push(entnr) + } + }) + } else { + G.bp.entityPositionGrid.getSurroundingEntities(entity.getArea(), (entnr: number) => { + const ent = G.bp.entity(entnr) + if (updateGroup.updates.includes(ent.name) && !redrawnEntities.includes(entnr)) { + EntityContainer.mappings.get(ent.entity_number).redraw() + redrawnEntities.push(entnr) + } + }) + } + } + } + } + + redraw(ignore_connections?: boolean, sort = true) { + const entity = G.bp.entity(this.entity_number) + + for (const s of this.entitySprites) s.destroy() + this.entitySprites = [] + for (const s of EntityContainer.getParts(entity, true, ignore_connections)) { + if (G.BPC.movingContainer === this) s.moving = true + s.setPosition(this.position) + this.entitySprites.push(s) + G.BPC.entitySprites.addChild(s) + } + if (sort) G.BPC.sortEntities() + + this.hitArea = new PIXI.Rectangle( + -entity.size.x * 16, + -entity.size.y * 16, + entity.size.x * 32, + entity.size.y * 32 + ) + } +} diff --git a/src/containers/info.ts b/src/containers/info.ts new file mode 100644 index 00000000..271a13a6 --- /dev/null +++ b/src/containers/info.ts @@ -0,0 +1,135 @@ +import G from '../globals' + +export class InfoContainer extends PIXI.Container { + + iWidth = 32 * 18 + iHeight = 32 * 24 + + constructor() { + super() + + this.visible = false + this.interactive = false + this.interactiveChildren = false + + this.setPosition() + window.addEventListener('resize', () => this.setPosition(), false) + + const background = new PIXI.Sprite(PIXI.Texture.WHITE) + background.width = this.iWidth + background.height = this.iHeight + background.tint = 0x3A3A3A + background.alpha = 0.9 + this.addChild(background) + + const text = new PIXI.Text('KEYBINDS') + text.position.set(this.iWidth / 2, 4) + text.style.fontSize = 24 + text.style.fontWeight = 'bold' + text.style.fill = 0xFFFFFF + text.anchor.set(0.5, 0) + this.addChild(text) + + this.writeColumn([ + 'While hovering over an entity', + '', + '', + '', + '', + '', + 'In editor window', + '', + '', + 'Others' + ], { x: this.iWidth / 2, y: 40 }, 0.5, true) + + this.writeColumn([ + '', + 'left click', + 'middle click', + 'right click', + 'R', + 'Q', + '', + 'left click recipe/module', + 'right click recipe/module', + '', + 'ctrl + Z/Y', + 'ctrl + C/V', + 'ctrl + S', + 'shift + N', + 'shift + right/left click', + 'alt', + 'esc', + 'E', + 'F', + 'W/A/S/D', + 'click + drag in blueprint area', + 'mouse wheel' + ], { x: this.iWidth / 2 - 4, y: 40 }, 1) + + this.writeColumn([ + '', + 'open editor window', + 'move', + 'remove', + 'rotate', + 'pippete tool/clear cursor', + '', + 'choose', + 'remove', + '', + 'undo/redo changes', + 'copy/paste bpstring', + 'generate bp picture', + 'clear bp', + 'copy/paste recipe', + 'toggle overlay', + 'close active window', + 'open inventory or close active window', + 'focuses viewport on blueprint', + 'move', + 'move', + 'zoom in/out' + ], { x: this.iWidth / 2 + 4, y: 40 }) + + this.writeColumn([ + 'You can load a blueprint from a bp string, pastebin, hastebin, gist, gitlab,', + ' factorioprints, google docs or text webpages.', + 'You can also add ?source= to the url', + ' to make sharing easier.', + 'Adding renderOnly as an url query parameter will only render the bp.', + 'I don\'t show network or parsing errors in the app yet, you can open the console', + ' (F12) to check if something is wrong.', + 'Entities with placeable-off-grid flag will not be added to the positionGrid', + ' (ex. landmine).', + '', + 'Factorio assets come directly from the Factorio game files, and are subject to', + ' all copyright policies associated with the game.' + ], { x: 4, y: 500 }) + } + + writeColumn(data: string[], offset: IPoint, anchorX = 0, bold = false) { + let nextY = 0 + for (const str of data) { + const text = new PIXI.Text(str) + text.position.set(offset.x, nextY++ * 20 + offset.y) + text.style.fontSize = 16 + if (bold) text.style.fontWeight = 'bold' + text.style.fill = 0xFFFFFF + text.anchor.set(anchorX, 0) + this.addChild(text) + } + } + + setPosition() { + this.position.set( + G.app.renderer.width / 2 - this.iWidth / 2, + G.app.renderer.height / 2 - this.iHeight / 2 + ) + } + + toggle() { + this.visible = !this.visible + } +} diff --git a/src/containers/inventory.ts b/src/containers/inventory.ts new file mode 100644 index 00000000..7b767471 --- /dev/null +++ b/src/containers/inventory.ts @@ -0,0 +1,248 @@ +import inventoryBundle from '../bundles/inventoryBundle.json' +import factorioData from '../factorio-data/factorioData' +import { AdjustmentFilter } from '@pixi/filter-adjustment' +import util from '../util' +import G from '../globals' +import { PaintContainer } from './paint' +import { isArray } from 'util' + +export class InventoryContainer extends PIXI.Container { + + static createIcon(item: any) { + if (item.icon) { + const icon = PIXI.Sprite.fromFrame(item.icon) + icon.anchor.set(0.5, 0.5) + return icon + } + if (item.icons) { + const img = new PIXI.Container() + for (const icon of item.icons) { + const sprite = PIXI.Sprite.fromFrame(icon.icon) + if (icon.scale) sprite.scale.set(icon.scale, icon.scale) + if (icon.shift) sprite.position.set(icon.shift[0], icon.shift[1]) + if (icon.tint) { + const t = icon.tint + sprite.filters = [new AdjustmentFilter({ + red: t.r, + green: t.g, + blue: t.b, + alpha: t.a + })] + } + sprite.anchor.set(0.5, 0.5) + img.addChild(sprite) + } + return img + } + } + + recipeVisualization: PIXI.Container + inventoryContents: PIXI.Container + itemTooltip: PIXI.Text + iconGutter = 36 + inventoryActiveGroup: PIXI.Sprite + inventoryGroup: Map = new Map() + iWidth = 32 * 12 + iHeight = 32 * 13 + + constructor() { + super() + + this.visible = false + this.interactive = true + + this.setPosition() + window.addEventListener('resize', () => this.setPosition(), false) + + const background = new PIXI.Sprite(PIXI.Texture.WHITE) + background.width = this.iWidth + background.height = this.iHeight + background.tint = 0x3A3A3A + background.alpha = 0.9 + this.addChild(background) + + this.inventoryContents = new PIXI.Container() + this.addChild(this.inventoryContents) + + this.itemTooltip = new PIXI.Text('') + this.itemTooltip.style.fill = 0xFFFFFF + this.itemTooltip.y = 352 + this.addChild(this.itemTooltip) + + this.recipeVisualization = new PIXI.Container() + this.recipeVisualization.position.set(16, 384 + 16) + this.addChild(this.recipeVisualization) + } + + setPosition() { + this.position.set( + G.app.renderer.width / 2 - this.iWidth / 2, + G.app.renderer.height / 2 - this.iHeight / 2 + ) + } + + create(filteredItems?: string[], cb?: (name: string) => void) { + this.itemTooltip.text = '' + this.recipeVisualization.visible = false + this.inventoryContents.removeChildren() + + let nextI = 0 + let groupHasItem = false + for (let i = 0, l = inventoryBundle.length; i < l; i++) { + + const grObj = new PIXI.Container() + let nextK = 0 + let nextJ = 0 + let subgroupHasItem = false + for (const subgroup of inventoryBundle[i].subgroups) { + for (const item of subgroup.items) { + const placeResult = factorioData.getItem(item.name).place_result + if ((!filteredItems && placeResult && factorioData.getEntity(placeResult)) || + filteredItems && filteredItems.includes(item.name) + ) { + const img = InventoryContainer.createIcon(item) + + if (nextK > 9) { + nextJ++ + nextK = 0 + } + + img.x = nextK * this.iconGutter + 16 + img.y = 64 + nextJ * this.iconGutter + 16 + img.interactive = true + img.buttonMode = true + + if (filteredItems && filteredItems.includes(item.name)) { + img.on('pointerdown', (e: PIXI.interaction.InteractionEvent) => { + if (e.data.button === 0) { + cb(item.name) + this.visible = false + } + }) + } else { + img.on('pointerdown', (e: PIXI.interaction.InteractionEvent) => { + if (e.data.button === 0) { + G.currentMouseState = G.mouseStates.PAINTING + + const newPosition = e.data.getLocalPosition(G.BPC) + const size = util.switchSizeBasedOnDirection(factorioData.getEntity(placeResult).size, 0) + G.BPC.paintContainer = new PaintContainer(placeResult, 0, { + x: newPosition.x - newPosition.x % 32 + (size.x % 2 * 16), + y: newPosition.y - newPosition.y % 32 + (size.y % 2 * 16) + }) + G.BPC.addChild(G.BPC.paintContainer) + this.visible = false + } + }) + } + img.on('pointerover', () => { + this.itemTooltip.text = item.name.split('-').map((s: any) => s.charAt(0).toUpperCase() + s.slice(1)).join(' ') + this.createRecipeVisualization(item.name) + }) + img.on('pointerout', () => { + this.itemTooltip.text = '' + this.recipeVisualization.visible = false + }) + + grObj.addChild(img) + groupHasItem = true + subgroupHasItem = true + nextK++ + } + } + if (subgroupHasItem) nextJ++ + subgroupHasItem = false + nextK = 0 + } + + if (groupHasItem) { + const img = PIXI.Sprite.fromFrame(inventoryBundle[i].icon) + img.x = nextI * 64 + img.y = 0 + img.interactive = true + img.buttonMode = true + img.on('pointerdown', (e: PIXI.interaction.InteractionEvent) => { + if (e.data.button === 0) { + if (img !== this.inventoryActiveGroup) { + this.inventoryGroup.get(this.inventoryActiveGroup).visible = false + this.inventoryActiveGroup = img + this.inventoryGroup.get(img).visible = true + } + } + }) + + if (nextI === 0) this.inventoryActiveGroup = img + else grObj.visible = false + + this.inventoryGroup.set(img, grObj) + this.inventoryContents.addChild(img, grObj) + + nextI++ + groupHasItem = false + } + } + } + + toggle(filteredItems?: string[], cb?: (name: string) => void) { + if (!this.visible) { + this.create(filteredItems, cb) + this.visible = true + G.openedGUIWindow = this + } else { + this.close() + } + } + + close() { + this.visible = false + G.openedGUIWindow = G.editEntityContainer.visible ? G.editEntityContainer : undefined + } + + createRecipeVisualization(recipeName: string) { + const RECIPE = factorioData.getRecipe(recipeName) + if (!RECIPE) return + this.recipeVisualization.removeChildren() + + const recipe = RECIPE.normal ? RECIPE.normal : RECIPE + // TODO: maybe normalize the recipeBundle trough script and not here at runtime + const time = (recipe.energy_required !== undefined ? recipe.energy_required : RECIPE.energy_required) || 0.5 + const ingredients = recipe.ingredients.map((o: any) => isArray(o) ? o : [o.name, o.amount]) + const results = recipe.result ? [[recipe.result, recipe.result_count || 1]] : + recipe.results.map((o: any) => [o.name, o.probability ? o.probability * o.amount : o.amount]) + + let nextX = 0 + for (const i of ingredients) { + const s = InventoryContainer.createIcon(factorioData.getItem(i[0])) + s.x = nextX * 36 + this.recipeVisualization.addChild(s, createAmountText(i[1])) + nextX++ + } + + const text = new PIXI.Text(`=${time}s>`) + text.style.fontSize = 13 + text.style.fontWeight = 'bold' + text.style.fill = 0xFFFFFF + text.anchor.set(0.5, 0.5) + text.x = nextX++ * 36 + this.recipeVisualization.addChild(text) + + for (const r of results) { + const s = InventoryContainer.createIcon(factorioData.getItem(r[0])) + s.x = nextX * 36 + this.recipeVisualization.addChild(s, createAmountText(r[1])) + nextX++ + } + + function createAmountText(amount: string) { + const text = new PIXI.Text(amount) + text.style.fontSize = 13 + text.style.fontWeight = 'bold' + text.style.fill = 0xFFFFFF + text.anchor.set(1, 1) + text.position.set(nextX * 36 + 16, 16) + return text + } + + this.recipeVisualization.visible = true + } +} diff --git a/src/containers/overlay.ts b/src/containers/overlay.ts new file mode 100644 index 00000000..cc73606a --- /dev/null +++ b/src/containers/overlay.ts @@ -0,0 +1,387 @@ +import factorioData from '../factorio-data/factorioData' +import { InventoryContainer } from './inventory' +import G from '../globals' +import util from '../util' + +export class OverlayContainer extends PIXI.Container { + + undergroundLines: PIXI.Container + cursorBox: PIXI.Container + overlay: PIXI.Container + + constructor() { + super() + + this.interactive = false + this.interactiveChildren = false + + this.overlay = new PIXI.Container() + + this.cursorBox = new PIXI.Container() + this.cursorBox.scale.set(0.5, 0.5) + this.cursorBox.visible = false + + this.undergroundLines = new PIXI.Container() + + this.addChild(this.overlay, this.cursorBox, this.undergroundLines) + } + + createEntityInfo(entity_number: number, position: IPoint) { + const entity = G.bp.entity(entity_number) + const entityInfo = new PIXI.Container() + + if (entity.recipe && entity.recipe !== 'rocket-part') { + const recipeInfo = new PIXI.Container() + createIconWithBackground(recipeInfo, entity.recipe) + const S = entity.name === 'oil-refinery' ? 1.5 : 0.9 + recipeInfo.scale.set(S, S) + recipeInfo.position.set(0, -10) + entityInfo.addChild(recipeInfo) + + const fluidIcons = new PIXI.Container() + const recipeData = factorioData.getRecipe(entity.recipe) + const rD = recipeData.normal ? recipeData.normal : recipeData + switch (recipeData.category) { + case 'oil-processing': + case 'chemistry': + const inputPositions: IPoint[] = [] + const outputPositions: IPoint[] = [] + for (const fb of entity.entityData.fluid_boxes) { + (fb.production_type === 'input' ? inputPositions : outputPositions).push({ + x: fb.pipe_connections[0].position[0], + y: fb.pipe_connections[0].position[1] + }) + } + function createIconsForType(type: string) { + const iconNames: string[] = [] + for (const io of type === 'input' ? rD.ingredients : rD.results) { + if (io.type === 'fluid') { + iconNames.push(io.name) + } + } + if (iconNames.length !== 0) { + const positions = type === 'input' ? inputPositions : outputPositions + for (let i = 0; i < positions.length; i++) { + const position = util.transformConnectionPosition(positions[i], entity.direction) + createIconWithBackground( + fluidIcons, + i > iconNames.length - 1 ? iconNames[0] : iconNames[i], + { x: position.x * 64, y: position.y * 64 } + ) + } + } + } + createIconsForType('input') + if (rD.results) createIconsForType('output') + break + case 'crafting-with-fluid': + function createIconForType(type: string) { + for (const io of type === 'input' ? rD.ingredients : rD.results) { + if (io.type === 'fluid') { + const position = util.rotatePointBasedOnDir(entity.entityData.fluid_boxes.find( + (fb: any) => fb.production_type === type).pipe_connections[0].position, + entity.direction + ) + createIconWithBackground( + fluidIcons, + io.name, + { x: position.x * 32, y: position.y * 32 } + ) + return true + } + } + } + createIconForType(entity.assemblerPipeDirection) + } + fluidIcons.scale.set(0.5, 0.5) + if (fluidIcons.children.length !== 0) entityInfo.addChild(fluidIcons) + } + + if (entity.modules) { + const moduleInfo = new PIXI.Container() + const shift = entity.entityData.module_specification.module_info_icon_shift + const mL = entity.modulesList + for (let i = 0; i < mL.length; i++) { + createIconWithBackground(moduleInfo, mL[i], { x: i * 32, y: 0 }) + } + moduleInfo.scale.set(0.5, 0.5) + moduleInfo.position.set((shift ? shift[0] : 0) * 32 - mL.length * 8 + 8, (shift ? shift[1] : 0.75) * 32) + entityInfo.addChild(moduleInfo) + } + + const filters = entity.inserterFilters || entity.logisticChestFilters || entity.constantCombinatorFilters + if (filters) { + const filterInfo = new PIXI.Container() + for (let i = 0; i < filters.length; i++) { + if (i === 4) break + createIconWithBackground( + filterInfo, + filters[i].name || filters[i].signal.name, + { x: i % 2 * 32 - (filters.length !== 1 ? 16 : 0), y: filters.length < 3 ? 0 : (i < 2 ? -16 : 16)} + ) + } + let S = 0.5 + if (entity.inserterFilters && filters.length !== 1) S = 0.4 + if (entity.logisticChestFilters && filters.length === 1) S = 0.6 + filterInfo.scale.set(S, S) + entityInfo.addChild(filterInfo) + } + + const combinatorConditions = entity.deciderCombinatorConditions || entity.arithmeticCombinatorConditions + if (combinatorConditions) { + const filterInfo = new PIXI.Container() + const cFS = combinatorConditions.first_signal + const cSS = combinatorConditions.second_signal + const cOS = combinatorConditions.output_signal + if (cFS) createIconWithBackground(filterInfo, cFS.name, { x: cSS ? -16 : 0, y: -16 }) + if (cSS) createIconWithBackground(filterInfo, cSS.name, { x: 16, y: -16 }) + if (cOS) createIconWithBackground(filterInfo, cOS.name, { x: 0, y: 16 }) + filterInfo.scale.set(0.5, 0.5) + if (filterInfo.children.length !== 0) entityInfo.addChild(filterInfo) + } + + if (entity.type === 'boiler' || entity.type === 'generator') { + const filteredFluidInputs = new PIXI.Container() + function generateIconsForFluidBox(fluidBox: any) { + for (const c of fluidBox.pipe_connections) { + const position = util.transformConnectionPosition({ x: c.position[0], y: c.position[1] }, entity.direction) + createIconWithBackground( + filteredFluidInputs, + fluidBox.filter, + { x: position.x * 64, y: position.y * 64 } + ) + } + } + generateIconsForFluidBox(entity.entityData.fluid_box) + if (entity.entityData.output_fluid_box) generateIconsForFluidBox(entity.entityData.output_fluid_box) + filteredFluidInputs.scale.set(0.5, 0.5) + entityInfo.addChild(filteredFluidInputs) + } + + if (entity.splitterInputPriority || entity.splitterOutputPriority) { + const filterInfo = new PIXI.Container() + if (entity.splitterFilter) { + createIconWithBackground( + filterInfo, + entity.splitterFilter, + util.rotatePointBasedOnDir({ x: entity.splitterOutputPriority === 'right' ? 32 : -32, y: 0 }, entity.direction) + ) + } else if (entity.splitterOutputPriority) createArrowForDirection(entity.splitterOutputPriority, -16) + if (entity.splitterInputPriority) createArrowForDirection(entity.splitterInputPriority, 16) + + function createArrowForDirection(direction: string, offsetY: number) { + const arrow = createArrow(util.rotatePointBasedOnDir({ x: direction === 'right' ? 32 : -32, y: offsetY }, entity.direction)) + arrow.scale.set(0.75, 0.75) + arrow.rotation = entity.direction * Math.PI * 0.25 + filterInfo.addChild(arrow) + } + filterInfo.scale.set(0.5, 0.5) + entityInfo.addChild(filterInfo) + } + + if (entity.name === 'arithmetic-combinator' || entity.name === 'decider-combinator') { + const arrows = new PIXI.Container() + arrows.addChild(createArrow({ x: 0, y: -48 }), createArrow({ x: 0, y: 48 })) + arrows.rotation = entity.direction * Math.PI * 0.25 + arrows.scale.set(0.5, 0.5) + entityInfo.addChild(arrows) + } + + if (entity.type === 'mining-drill' && entity.name !== 'pumpjack') { + const arrows = new PIXI.Container() + arrows.addChild(createArrow({ + x: entity.entityData.vector_to_place_result[0] * 64, + y: entity.entityData.vector_to_place_result[1] * 64 + 18 + })) + arrows.rotation = entity.direction * Math.PI * 0.25 + arrows.scale.set(0.5, 0.5) + entityInfo.addChild(arrows) + } + + if (entity.name === 'pumpjack' || entity.name === 'pump' || entity.name === 'offshore-pump' || entity.type === 'boiler' || + entity.type === 'generator' || entity.name === 'oil-refinery' || entity.name === 'chemical-plant' || entity.assemblerCraftsWithFluid + ) { + const arrows = new PIXI.Container() + if (entity.entityData.fluid_boxes) { + if (entity.assemblerCraftsWithFluid) { + const c = entity.entityData.fluid_boxes[entity.assemblerPipeDirection === 'input' ? 1 : 0] + f({ + x: c.pipe_connections[0].position[0], + y: c.pipe_connections[0].position[1] + }) + } else { + const dontConnectOutput = entity.name === 'chemical-plant' && entity.chemicalPlantDontConnectOutput + for (const c of entity.entityData.fluid_boxes) { + // fluid_boxes are reversed + if (!(c.production_type === 'input' && dontConnectOutput)) { + f({ + x: c.pipe_connections[0].position[0], + y: c.pipe_connections[0].position[1] + }) + } + } + } + } else { + if (entity.entityData.fluid_box) { + for (const p of entity.entityData.fluid_box.pipe_connections) { + if (entity.name === 'pump' && p === entity.entityData.fluid_box.pipe_connections[1]) break + f({ + x: p.position[0], + y: p.position[1] + }, entity.entityData.fluid_box.production_type === 'input-output' ? 2 : 1) + } + } + if (entity.entityData.output_fluid_box) { + for (const p of entity.entityData.output_fluid_box.pipe_connections) { + f({ + x: p.position ? p.position[0] : p.positions[entity.direction / 2][0], + y: p.position ? p.position[1] : p.positions[entity.direction / 2][1] + }) + } + } + } + function f(position: IPoint, type = 1) { + const offset = 0.5 + if (entity.name === 'offshore-pump') position.y -= 2 + const dir = Math.abs(position.x) > Math.abs(position.y) ? + (Math.sign(position.x) === 1 ? 2 : 6) : + (Math.sign(position.y) === 1 ? 4 : 0) + switch (dir) { + case 0: position.y += offset; break + case 2: position.x -= offset; break + case 4: position.y -= offset; break + case 6: position.x += offset + } + const arrow = createArrow({ + x: position.x * 64, + y: position.y * 64 + }, type) + if (entity.type === 'boiler' && type === 2) arrow.rotation = 0.5 * Math.PI + if (entity.name === 'pumpjack') arrow.rotation = entity.direction * Math.PI * 0.25 + arrows.addChild(arrow) + } + if (entity.name !== 'pumpjack') { + arrows.rotation = (entity.name === 'oil-refinery' || entity.name === 'pump' || entity.type === 'boiler' ? + entity.direction : (entity.direction + 4) % 8) * Math.PI * 0.25 + } + arrows.scale.set(0.5, 0.5) + entityInfo.addChild(arrows) + } + + if (entityInfo.children.length !== 0) { + entityInfo.position.set(position.x, position.y) + this.overlay.addChild(entityInfo) + return entityInfo + } + + function createIconWithBackground(container: PIXI.Container, itemName: string, position?: IPoint) { + const icon = InventoryContainer.createIcon(factorioData.getItem(itemName)) + const background = PIXI.Sprite.fromFrame('extra-icon:entity-info-dark-background') + background.anchor.set(0.5, 0.5) + if (position) { + icon.position.set(position.x , position.y) + background.position.set(position.x , position.y) + } + const lastLength = container.children.length + container.addChild(background, icon) + if (lastLength !== 0) { + container.swapChildren(container.getChildAt(lastLength / 2), container.getChildAt(lastLength)) + } + } + + function createArrow(position: IPoint, type = 0) { + const arrow = PIXI.Sprite.fromFrame('extra-icon:' + + (type === 0 ? 'indication-arrow' : (type === 1 ? 'fluid-indication-arrow' : 'fluid-indication-arrow-both-ways')) + ) + arrow.anchor.set(0.5, 0.5) + arrow.position.set(position.x , position.y) + return arrow + } + } + + showCursorBox() { + this.cursorBox.visible = true + } + + updateCursorBoxSize(width: number, height: number) { + this.cursorBox.removeChildren() + if (width === 1 && height === 1) { + const s = PIXI.Sprite.fromFrame('extra-icon:cursor-boxes-32x32-0') + s.anchor.set(0.5, 0.5) + this.cursorBox.addChild(s) + } else { + this.cursorBox.addChild(...createCorners( + 'extra-icon:cursor-boxes-' + mapMinLengthToSpriteIndex(Math.min(width, height)) + )) + } + function mapMinLengthToSpriteIndex(minLength: number) { + if (minLength < 0.4) return '4' + if (minLength < 0.7) return '3' + if (minLength < 1.05) return '2' + if (minLength < 3.5) return '1' + return '0' + } + function createCorners(spriteName: string) { + const c0 = PIXI.Sprite.fromFrame(spriteName) + const c1 = PIXI.Sprite.fromFrame(spriteName) + const c2 = PIXI.Sprite.fromFrame(spriteName) + const c3 = PIXI.Sprite.fromFrame(spriteName) + c0.position.set(-width * 32, -height * 32) + c1.position.set(width * 32, -height * 32) + c2.position.set(-width * 32, height * 32) + c3.position.set(width * 32, height * 32) + c1.rotation = Math.PI * 0.5 + c2.rotation = Math.PI * 1.5 + c3.rotation = Math.PI + return [c0, c1, c2, c3] + } + } + + updateCursorBoxPosition(position: IPoint) { + this.cursorBox.position.set(position.x, position.y) + } + + hideCursorBox() { + this.cursorBox.visible = false + } + + updateUndergroundLines(name: string, position: IPoint, direction: number, searchDirection: number) { + const fd = factorioData.getEntity(name) + if (fd.type === 'underground-belt' || name === 'pipe-to-ground') { + this.undergroundLines.removeChildren() + const otherEntity = G.bp.entityPositionGrid.findEntityWithSameNameAndDirection( + name, + name === 'pipe-to-ground' ? searchDirection : direction, + position, + searchDirection, + fd.max_distance || 10 + ) + if (otherEntity) { + const oE = G.bp.entity(otherEntity) + // Return if directionTypes are the same + if (fd.type === 'underground-belt' && + (oE.directionType === 'input' ? oE.direction : (oE.direction + 4 % 8)) === searchDirection) return + const distance = searchDirection % 4 === 0 ? Math.abs(oE.position.y - position.y) : + Math.abs(oE.position.x - position.x) + const sign = searchDirection === 0 || searchDirection === 6 ? -1 : 1 + for (let i = 1; i < distance; i++) { + const s = PIXI.Sprite.fromFrame('extra-icon:underground-lines-' + (name === 'pipe-to-ground' ? '0' : '1')) + s.rotation = direction * Math.PI * 0.25 + s.scale.set(0.5, 0.5) + s.anchor.set(0.5, 0.5) + if (searchDirection % 4 === 0) s.position.y += sign * i * 32 + else s.position.x += sign * i * 32 + this.undergroundLines.addChild(s) + } + } + } + } + + updateUndergroundLinesPosition(position: IPoint) { + this.undergroundLines.position.set(position.x, position.y) + } + + hideUndergroundLines() { + this.undergroundLines.removeChildren() + } +} diff --git a/src/containers/paint.ts b/src/containers/paint.ts new file mode 100644 index 00000000..f6aeeca3 --- /dev/null +++ b/src/containers/paint.ts @@ -0,0 +1,257 @@ +import G from '../globals' +import util from '../util' +import factorioData from '../factorio-data/factorioData' +import { EntityContainer } from './entity' +import { AdjustmentFilter } from '@pixi/filter-adjustment' +import { UnderlayContainer } from './underlay' + +export class PaintContainer extends PIXI.Container { + areaVisualization: PIXI.Sprite | PIXI.Sprite[] | undefined + holdingRightClick: boolean + directionType: string + direction: number + holdingLeftClick: boolean + filter: AdjustmentFilter + + constructor(name: string, direction: number, position: IPoint) { + super() + this.name = name + this.direction = direction + this.directionType = 'input' + this.position.set(position.x, position.y) + this.filter = new AdjustmentFilter({ blue: 0.4 }) + this.filters = [this.filter] + this.checkBuildable() + + this.interactive = true + this.interactiveChildren = false + this.buttonMode = true + + this.holdingLeftClick = false + + this.areaVisualization = G.BPC.underlayContainer.createNewArea(this.name) + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => { + s.alpha += 0.25 + s.visible = true + }) + G.BPC.underlayContainer.activateRelatedAreas(this.name) + + this.on('pointerdown', this.pointerDownEventHandler) + this.on('pointerup', this.pointerUpEventHandler) + this.on('pointerupoutside', this.pointerUpEventHandler) + // this.on('pointermove', this.pointerMoveEventHandler) + + this.redraw() + } + + destroy() { + super.destroy() + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => s.destroy()) + G.BPC.underlayContainer.deactivateActiveAreas() + G.BPC.overlayContainer.hideUndergroundLines() + } + + checkBuildable() { + const position = EntityContainer.getGridPosition(this.position) + const size = util.switchSizeBasedOnDirection(factorioData.getEntity(this.name).size, this.direction) + if (!EntityContainer.isContainerOutOfBpArea(position, size) && + (G.bp.entityPositionGrid.checkFastReplaceableGroup(this.name, this.direction, position) || + G.bp.entityPositionGrid.checkSameEntityAndDifferentDirection(this.name, this.direction, position) || + G.bp.entityPositionGrid.checkNoOverlap(this.name, this.direction, position)) + ) { + this.filter.red = 0.4 + this.filter.green = 1 + } else { + this.filter.red = 1 + this.filter.green = 0.4 + } + } + + updateUndergroundBeltRotation() { + const fd = factorioData.getEntity(this.name) + if (fd.type === 'underground-belt') { + const otherEntity = G.bp.entityPositionGrid.findEntityWithSameNameAndDirection( + this.name, (this.direction + 4) % 8, { + x: this.x / 32, + y: this.y / 32 + }, + this.direction, + fd.max_distance + ) + if (otherEntity) { + const oe = G.bp.entity(otherEntity) + this.directionType = oe.directionType === 'input' ? 'output' : 'input' + } else { + if (this.directionType === 'output') this.directionType = 'input' + } + this.redraw() + } + } + + updateUndergroundLines() { + G.BPC.overlayContainer.updateUndergroundLines( + this.name, + { x: this.position.x / 32, y: this.position.y / 32 }, + this.directionType === 'input' ? this.direction : (this.direction + 4) % 8, + this.name === 'pipe-to-ground' ? (this.direction + 4) % 8 : this.direction + ) + } + + rotate() { + const pr = factorioData.getEntity(this.name).possible_rotations + if (!pr) return + this.direction = pr[ (pr.indexOf(this.direction) + 1) % pr.length ] + this.redraw() + const size = util.switchSizeBasedOnDirection(factorioData.getEntity(this.name).size, this.direction) + if (size.x !== size.y) { + this.position.set( + this.x + ((this.x / 16 - G.gridCoords16.x) === 0 ? 0.5 : -0.5) * 32, + this.y + ((this.y / 16 - G.gridCoords16.y) === 0 ? 0.5 : -0.5) * 32 + ) + + const pos = EntityContainer.getPositionFromData(this.position, size) + this.position.set(pos.x, pos.y) + } + this.checkBuildable() + this.updateUndergroundBeltRotation() + this.updateUndergroundLines() + } + + redraw() { + this.removeChildren() + this.addChild(...EntityContainer.getParts({ + name: this.name, + direction: this.directionType === 'output' ? (this.direction + 4) % 8 : this.direction, + directionType: this.directionType + }, true, true)) + const size = util.switchSizeBasedOnDirection(factorioData.getEntity(this.name).size, this.direction) + this.hitArea = new PIXI.Rectangle( + -size.x * 16, + -size.y * 16, + size.x * 32, + size.y * 32 + ) + } + + pointerDownEventHandler(e: PIXI.interaction.InteractionEvent) { + if (e.data.button === 0) { + this.holdingLeftClick = true + this.placeEntityContainer() + } else if (e.data.button === 2) { + this.holdingRightClick = true + this.removeContainer() + } + } + + pointerUpEventHandler(e: PIXI.interaction.InteractionEvent) { + if (e.data.button === 0) { + this.holdingLeftClick = false + } else if (e.data.button === 2) { + this.holdingRightClick = false + } + } + + // pointerMoveEventHandler(e: PIXI.interaction.InteractionEvent) { + // this.moveTo(e.data.getLocalPosition(this.parent)) + // } + + moveTo(newPosition: IPoint) { + const newCursorPos = { + x: (newPosition.x - newPosition.x % 16) / 16, + y: (newPosition.y - newPosition.y % 16) / 16 + } + if (newCursorPos.x !== G.gridCoords16.x || newCursorPos.y !== G.gridCoords16.y) { + if (this.holdingRightClick) this.removeContainer() + + switch (this.name) { + case 'straight-rail': + case 'curved-rail': + case 'train-stop': + this.position.set( + newPosition.x - (newPosition.x + G.railMoveOffset.x * 32) % 64 + 32, + newPosition.y - (newPosition.y + G.railMoveOffset.y * 32) % 64 + 32 + ) + break + default: + const size = util.switchSizeBasedOnDirection(factorioData.getEntity(this.name).size, this.direction) + const pos = EntityContainer.getPositionFromData(newPosition, size) + this.position.set(pos.x, pos.y) + } + + this.updateUndergroundBeltRotation() + G.BPC.overlayContainer.updateUndergroundLinesPosition(this.position) + this.updateUndergroundLines() + + UnderlayContainer.modifyVisualizationArea(this.areaVisualization, s => s.position.copy(this.position)) + + if (this.holdingLeftClick) this.placeEntityContainer() + G.gridCoords16 = newCursorPos + + this.checkBuildable() + } + } + + removeContainer() { + const position = EntityContainer.getGridPosition(this.position) + const c = EntityContainer.mappings.get(G.bp.entityPositionGrid.getCellAtPosition(position)) + if (c) { + c.removeContainer() + this.checkBuildable() + } + } + + placeEntityContainer() { + const fd = factorioData.getEntity(this.name) + const position = EntityContainer.getGridPosition(this.position) + const size = util.switchSizeBasedOnDirection(fd.size, this.direction) + if (EntityContainer.isContainerOutOfBpArea(position, size)) return + + const frgEntNr = G.bp.entityPositionGrid.checkFastReplaceableGroup(this.name, this.direction, position) + if (frgEntNr) { + const frgEnt = G.bp.entity(frgEntNr) + frgEnt.change(this.name, this.direction) + const c = EntityContainer.mappings.get(frgEntNr) + c.redraw() + c.redrawSurroundingEntities() + return + } + const snEntNr = G.bp.entityPositionGrid.checkSameEntityAndDifferentDirection( + this.name, this.direction, position + ) + if (snEntNr) { + G.bp.entity(snEntNr).direction = this.direction + const c = EntityContainer.mappings.get(snEntNr) + c.redraw() + c.redrawSurroundingEntities() + return + } + + const isUB = fd.type === 'underground-belt' + const res = G.bp.createEntity(this.name, position, + isUB && this.directionType === 'output' ? (this.direction + 4) % 8 : this.direction, + isUB ? this.directionType : undefined + ) + if (res) { + const ec = new EntityContainer(res) + if (ec.areaVisualization) { + if (ec.areaVisualization instanceof PIXI.Sprite) { + ec.areaVisualization.visible = true + } else { + for (const s of ec.areaVisualization) s.visible = true + } + } + G.BPC.entities.addChild(ec) + ec.redrawSurroundingEntities() + + if (isUB || this.name === 'pipe-to-ground') { + this.direction = (this.direction + 4) % 8 + this.redraw() + G.BPC.overlayContainer.hideUndergroundLines() + } + + G.BPC.updateOverlay() + } + + this.checkBuildable() + } +} diff --git a/src/containers/toolbar.ts b/src/containers/toolbar.ts new file mode 100644 index 00000000..9fe93a12 --- /dev/null +++ b/src/containers/toolbar.ts @@ -0,0 +1,59 @@ +import G from '../globals' + +export class ToolbarContainer extends PIXI.Container { + + info: PIXI.Text + logo: PIXI.Text + fpsGUIText: PIXI.Text + gridposGUIText: PIXI.Text + + constructor() { + super() + + this.interactive = false + this.interactiveChildren = false + + const background = new PIXI.Sprite(PIXI.Texture.WHITE) + background.width = G.app.renderer.width + window.addEventListener('resize', () => { + background.width = G.app.renderer.width + this.fpsGUIText.position.set(G.app.renderer.width, background.height / 2) + this.logo.position.set(G.app.renderer.width / 2, background.height / 2) + this.info.position.set(G.app.renderer.width - 100, background.height) + }, false) + background.height = 32 + background.tint = 0x303030 + this.addChild(background) + + this.gridposGUIText = new PIXI.Text('') + this.gridposGUIText.anchor.set(0, 0.5) + this.gridposGUIText.position.set(0, background.height / 2) + this.gridposGUIText.style.fill = 0xFFFFFF + this.addChild(this.gridposGUIText) + + this.fpsGUIText = new PIXI.Text('') + this.fpsGUIText.anchor.set(1, 0.5) + this.fpsGUIText.style.fill = 0xFFFFFF + this.fpsGUIText.position.set(G.app.renderer.width, background.height / 2) + this.addChild(this.fpsGUIText) + + this.logo = new PIXI.Text('Factorio Blueprint Editor') + this.logo.anchor.set(0.5, 0.5) + this.logo.style.fill = 0xFFFFFF + this.logo.position.set(G.app.renderer.width / 2, background.height / 2) + this.addChild(this.logo) + + this.info = new PIXI.Text('Press I for info') + this.info.anchor.set(1, 1) + this.info.style.fill = 0xFFFFFF + this.info.style.fontSize = 13 + this.info.position.set(G.app.renderer.width - 100, background.height) + this.addChild(this.info) + + G.app.ticker.add(() => this.fpsGUIText.text = String(Math.round(G.app.ticker.FPS)) + ' FPS') + } + + updateGridPos(coords: IPoint) { + this.gridposGUIText.text = `X ${coords.x} Y ${coords.y}` + } +} diff --git a/src/containers/underlay.ts b/src/containers/underlay.ts new file mode 100644 index 00000000..b1be9d8d --- /dev/null +++ b/src/containers/underlay.ts @@ -0,0 +1,136 @@ +import factorioData from '../factorio-data/factorioData' +import { isArray } from 'util' +import { AdjustmentFilter } from '@pixi/filter-adjustment' + +export class UnderlayContainer extends PIXI.Container { + + static getDataForVisualizationArea(name: string) { + const type = factorioData.getEntity(name).type + function undoBlendModeColorShift(color0: number, color1: number, alpha: number) { + // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc + // array[BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA] + return color1 - color0 * (1 - alpha) + } + if (name === 'roboport') { + return { + type: ['logistics0', 'logistics1'], + rKey: ['construction_radius', 'logistics_radius'], + color: [0x83D937, undoBlendModeColorShift(0xFF8800, 0x83D937, 0.25)] + } + } + if (type === 'electric-pole') { + return { + type: 'poles', + rKey: 'supply_area_distance', + color: 0x33755D9 + } + } + if (name === 'beacon') { + return { + type: 'beacons', + rKey: 'supply_area_distance', + color: 0xD9C037 + } + } + if (name === 'electric-mining-drill') { + return { + type: 'drills', + rKey: 'resource_searching_radius', + color: 0x4EAD9F + } + } + } + + static modifyVisualizationArea(area: PIXI.Sprite | PIXI.Sprite[] | undefined, fn: (s: PIXI.Sprite) => void) { + if (area) { + if (area instanceof PIXI.Sprite) fn(area) + else for (const s of area) fn(s) + } + } + + active: string[] + logistics0: PIXI.Container + logistics1: PIXI.Container + poles: PIXI.Container + beacons: PIXI.Container + drills: PIXI.Container + + constructor() { + super() + + this.interactive = false + this.interactiveChildren = false + + this.active = [] + this.logistics0 = new PIXI.Container() + this.logistics1 = new PIXI.Container() + this.poles = new PIXI.Container() + this.beacons = new PIXI.Container() + this.drills = new PIXI.Container() + + const filter = new AdjustmentFilter({ alpha: 0.25 }) + this.logistics0.filters = [filter] + this.logistics1.filters = [filter] + + this.addChild(this.logistics0, this.logistics1, this.poles, this.beacons, this.drills) + } + + activateRelatedAreas(entityName: string) { + const ed = factorioData.getEntity(entityName) + const data = UnderlayContainer.getDataForVisualizationArea(entityName) + if (data) if (isArray(data.type)) this.active.push(...data.type); else this.active.push(data.type) + if (ed.type === 'logistic-container') this.active.push('logistics0', 'logistics1') + if (ed.energy_source && ed.energy_source.type === 'electric') this.active.push('poles') + if (ed.module_specification) this.active.push('beacons') + + for (const type of this.active) { + for (const s of this[type].children) { + s.visible = true + } + } + } + + deactivateActiveAreas() { + for (const type of this.active) { + for (const s of this[type].children) { + s.visible = false + } + } + this.active = [] + } + + createNewArea(entityName: string, position?: PIXI.Point | PIXI.ObservablePoint) { + const aVData = UnderlayContainer.getDataForVisualizationArea(entityName) + if (aVData) { + const ed = factorioData.getEntity(entityName) + if (isArray(aVData.type)) { + const aVs = [] + for (let i = 0; i < aVData.type.length; i++) { + const areaVisualization = createVisualizationArea(ed[aVData.rKey[i]], aVData.color[i], position, 1) + this[aVData.type[i]].addChild(areaVisualization) + aVs.push(areaVisualization) + } + return aVs + } else { + const areaVisualization = createVisualizationArea(ed[aVData.rKey], aVData.color, position) + this[aVData.type].addChild(areaVisualization) + return areaVisualization + } + } + + function createVisualizationArea(radius: number, color: number, position?: PIXI.Point | PIXI.ObservablePoint, alpha = 0.25) { + const aV = new PIXI.Sprite(PIXI.Texture.WHITE) + const S = radius * 64 + aV.width = S + aV.height = S + aV.tint = color + aV.anchor.set(0.5, 0.5) + aV.alpha = alpha + if (position) { + aV.visible = false + aV.position.copy(position) + } + return aV + } + } +} diff --git a/src/containers/wires.ts b/src/containers/wires.ts new file mode 100644 index 00000000..64b352d3 --- /dev/null +++ b/src/containers/wires.ts @@ -0,0 +1,111 @@ +import { EntityContainer } from './entity' +import G from '../globals' + +export class WiresContainer extends PIXI.Container { + + static createWire(p1: IPoint, p2: IPoint, color: string) { + const wire = new PIXI.Graphics() + if (color === 'red') { + wire.lineStyle(1.3, 0xC83718) + } else { + wire.lineStyle(1.3, 0x588C38) + } + + const force = 0.25 + const minX = Math.min(p1.x, p2.x) + const minY = Math.min(p1.y, p2.y) + const dX = Math.max(p1.x, p2.x) - minX + const dY = Math.max(p1.y, p2.y) - minY + const X = minX + dX / 2 + const Y = (dY / dX) * (X - minX) + minY + force * dX + + wire.moveTo(p1.x, p1.y) + // TODO: make wires smoother, use 2 points instead of 1 + if (p1.x === p2.x) { + wire.lineTo(p2.x, p2.y) + } else { + wire.bezierCurveTo(X, Y, X, Y, p2.x, p2.y) + } + return wire + } + + static getFinalPos(entity_number: number, color: string, side: number) { + const point = G.bp.entity(entity_number).getWireConnectionPoint(color, side) + return { + x: EntityContainer.mappings.get(entity_number).position.x + point[0] * 32, + y: EntityContainer.mappings.get(entity_number).position.y + point[1] * 32 + } + } + + entityWiresMapping: Map + + constructor() { + super() + + this.interactive = false + this.interactiveChildren = false + + this.entityWiresMapping = new Map() + } + + remove(entity_number: number) { + this.entityWiresMapping.forEach((v, k) => { + const first = Number(k.split('-')[0]) + const second = Number(k.split('-')[1]) + if (first === entity_number || second === entity_number) { + for (const g of v) g.destroy() + this.entityWiresMapping.delete(k) + } + }) + } + + update(entity_number: number) { + if (!G.bp.entity(entity_number).hasConnections) return + this.remove(entity_number) + G.bp.connections.connections.forEach((v, k) => { + const first = Number(k.split('-')[0]) + const second = Number(k.split('-')[1]) + if (first === entity_number || second === entity_number) { + if (first === entity_number) EntityContainer.mappings.get(second).redraw() + else if (second === entity_number) EntityContainer.mappings.get(first).redraw() + + const paths: PIXI.Graphics[] = [] + v.forEach(c => { + paths.push(WiresContainer.createWire( + WiresContainer.getFinalPos(c.get('entity_number_1') as number, c.get('color') as string, c.get('entity_side_1') as number), + WiresContainer.getFinalPos(c.get('entity_number_2') as number, c.get('color') as string, c.get('entity_side_2') as number), + c.get('color') as string + )) + }) + for (const p of paths) { + this.addChild(p) + } + this.entityWiresMapping.set(k, paths) + } + }) + } + + drawWires() { + G.bp.connections.connections.forEach((v, k) => { + if (this.entityWiresMapping.has(k)) { + for (const p of this.entityWiresMapping.get(k)) { + this.removeChild(p) + } + } + const paths: PIXI.Graphics[] = [] + + v.forEach(c => { + paths.push(WiresContainer.createWire( + WiresContainer.getFinalPos(c.get('entity_number_1') as number, c.get('color') as string, c.get('entity_side_1') as number), + WiresContainer.getFinalPos(c.get('entity_number_2') as number, c.get('color') as string, c.get('entity_side_2') as number), + c.get('color') as string + )) + }) + + for (const p of paths) { + this.addChild(p) + } + this.entityWiresMapping.set(k, paths) + }) + } +} diff --git a/src/entitySprite.ts b/src/entitySprite.ts new file mode 100644 index 00000000..667cb879 --- /dev/null +++ b/src/entitySprite.ts @@ -0,0 +1,83 @@ +import G from './globals' +import { AdjustmentFilter } from '@pixi/filter-adjustment' + +export class EntitySprite extends PIXI.Sprite { + static nextID = 0 + + id: number + isMoving: boolean + shift: IPoint + zIndex: number + zOrder: number + + constructor(data: any) { + if (!data.shift) data.shift = [0, 0] + if (!data.x) data.x = 0 + if (!data.y) data.y = 0 + if (!data.divW) data.divW = 1 + if (!data.divH) data.divH = 1 + + const spriteData = PIXI.utils.TextureCache[data.filename] + // TODO: Cache the texture + super(new PIXI.Texture(spriteData.baseTexture, new PIXI.Rectangle( + spriteData.frame.x + data.x, + spriteData.frame.y + data.y, + data.width / data.divW, + data.height / data.divH + ))) + + this.interactive = false + this.id = EntitySprite.nextID++ + this.isMoving = false + + this.shift = { + x: data.shift[0] * 32, + y: data.shift[1] * 32 + } + + this.position.set(this.shift.x, this.shift.y) + + if (data.scale) this.scale.set(data.scale, data.scale) + this.anchor.set(0.5, 0.5) + + if (data.flipX) this.scale.x *= -1 + if (data.flipY) this.scale.y *= -1 + + if (data.height_divider) this.height /= data.height_divider + + if (data.rot) this.rotation = data.rot * Math.PI * 0.5 + + if (data.color) { + this.filters = [new AdjustmentFilter({ + gamma: 1.4, + contrast: 1.4, + brightness: 1.2, + red: data.color.r, + green: data.color.g, + blue: data.color.b, + alpha: data.color.a + })] + } + + return this + } + + set moving(moving: boolean) { + this.isMoving = moving + if (moving) { + if (this.filters !== null) this.filters.push(G.BPC.movingEntityFilter) + else this.filters = [G.BPC.movingEntityFilter] + } else { + // tslint:disable-next-line:no-null-keyword + if (this.filters.length === 1) this.filters = null + else this.filters.pop() + } + } + + setPosition(position: PIXI.Point | PIXI.ObservablePoint) { + this.position.set( + position.x + this.shift.x, + position.y + this.shift.y + ) + } +} diff --git a/src/factorio-data/BPString.ts b/src/factorio-data/BPString.ts new file mode 100644 index 00000000..59b67620 --- /dev/null +++ b/src/factorio-data/BPString.ts @@ -0,0 +1,67 @@ +import zlib from 'zlib' +import { Buffer } from 'buffer' +import Ajv from 'ajv' +import blueprintSchema from '../blueprintSchema.json' +import factorioData from './factorioData' +import { Blueprint } from './blueprint' +import { Book } from './book' + +const ajv = new Ajv() +ajv.addKeyword('entityName', { + validate: (data: string) => factorioData.checkEntityName(data), + errors: false, + schema: false +}) +ajv.addKeyword('itemName', { + validate: (data: string) => factorioData.checkItemName(data), + errors: false, + schema: false +}) +ajv.addKeyword('objectWithItemNames', { + validate: (data: object) => { + for (const k in data) { + if (!factorioData.checkItemName(k)) return false + } + return true + }, + errors: false, + schema: false +}) +ajv.addKeyword('recipeName', { + validate: (data: string) => factorioData.checkRecipeName(data), + errors: false, + schema: false +}) +ajv.addKeyword('tileName', { + validate: (data: string) => factorioData.checkTileName(data), + errors: false, + schema: false +}) +const validate = ajv.compile(blueprintSchema) + +export default { + decode: (str: string) => { + let data + try { + data = JSON.parse(zlib.inflateSync(Buffer.from(str.slice(1), 'base64')).toString('utf8')) + } catch (e) { + return { error: e } + } + + console.log(data) + + // data.blueprint.entities.forEach(e => { + // // if (e.control_behavior) { + // // let d = e.control_behavior.circuit_condition + // // if (d !== undefined) console.log(e.name + '\t\t\t\t' + d) + // // } + // if (e.filters !== undefined) console.log(e.name + '\t\t\t\t' + e.filters) + // }); + + if (!validate(data)) return { error: validate.errors } + + if (data.blueprint_book === undefined) return new Blueprint(data.blueprint) + return new Book(data) + }, + encode: (bPOrBook: any) => ('0' + zlib.deflateSync(JSON.stringify(bPOrBook.toObject())).toString('base64')) +} diff --git a/src/factorio-data/blueprint.ts b/src/factorio-data/blueprint.ts new file mode 100644 index 00000000..a96a4970 --- /dev/null +++ b/src/factorio-data/blueprint.ts @@ -0,0 +1,403 @@ +import factorioData from './factorioData' +import { Tile } from './tile' +import { PositionGrid } from './positionGrid' +import Immutable from 'immutable' +import initEntity from './entity' +import G from '../globals' +import { ConnectionsManager } from './connectionsManager' +import { EntityContainer } from '../containers/entity' + +export class Blueprint { + + name: string + icons: any[] + tiles: Tile[] + tilePositionGrid: any + version: number + connections: ConnectionsManager + next_entity_number: number + historyIndex: number + history: Array<{ + entity_number: number | number[]; + type: 'init' | 'add' | 'del' | 'mov' | 'upd'; + annotation: string; + rawEntities: Immutable.Map; + }> + bp: Blueprint + entityPositionGrid: PositionGrid + rawEntities: Immutable.Map + + constructor(data?: any) { + initEntity(this) + this.name = 'Blueprint' + this.icons = [] + this.rawEntities = Immutable.Map() + this.tiles = [] + this.tilePositionGrid = {} + this.version = undefined + this.next_entity_number = 1 + + if (data) { + if (!data.tiles) data.tiles = [] + if (!data.icons) data.icons = [] + this.name = data.label + this.version = data.version + + this.next_entity_number += data.entities.length + this.rawEntities = this.rawEntities.withMutations(map => { + for (const entity of data.entities) { + map.set(entity.entity_number, Immutable.fromJS(entity)) + // this.entityPositionGrid.setTileData(entity.entity_number) + } + }) + + data.tiles.forEach((tile: any) => { + this.createTile(tile.name, tile.position) + }) + + this.icons = [] + data.icons.forEach((icon: any) => { + this.icons[icon.index - 1] = icon.signal.name + }) + + this.setTileIds() + + // TODO: if entity has placeable-off-grid flag then take the next one + const firstEntityTopLeft = this.entity(1).topLeft() + + const offsetX = G.sizeBPContainer.width / 64 - (firstEntityTopLeft.x % 1 !== 0 ? -0.5 : 0) + const offsetY = G.sizeBPContainer.height / 64 - (firstEntityTopLeft.y % 1 !== 0 ? -0.5 : 0) + + this.rawEntities = this.rawEntities.withMutations(map => { + map.keySeq().forEach(k => { + // tslint:disable-next-line:no-parameter-reassignment + map.updateIn([k, 'position', 'x'], (x: number) => x += offsetX) + // tslint:disable-next-line:no-parameter-reassignment + map.updateIn([k, 'position', 'y'], (y: number) => y += offsetY) + }) + }) + + // tslint:disable-next-line:no-dynamic-delete + this.tiles.forEach(tile => delete this.tilePositionGrid[`${tile.position.x},${tile.position.y}`]) + this.tiles.forEach(tile => { + tile.position.x += offsetX + tile.position.y += offsetY + this.tilePositionGrid[`${tile.position.x},${tile.position.y}`] = tile + }) + } + + this.entityPositionGrid = new PositionGrid(this, [...this.rawEntities.keys()]) + this.connections = new ConnectionsManager(this, [...this.rawEntities.keys()]) + + this.historyIndex = 0 + this.history = [{ + entity_number: 0, + type: 'init', + annotation: '', + rawEntities: this.rawEntities + }] + + return this + } + + entity(entity_number: number) { + const e = this.rawEntities.get(entity_number) + if (!e) return undefined + return e.entity() + } + + undo( + pre: (hist: any) => void, + post: (hist: any) => void + ) { + if (this.historyIndex === 0) return + const hist = this.history[this.historyIndex--] + + switch (hist.type) { + case 'add': + case 'del': + case 'mov': + this.entityPositionGrid.undo() + } + + pre(hist) + this.rawEntities = this.history[this.historyIndex].rawEntities + switch (hist.type) { + case 'del': + if (this.entity(hist.entity_number as number).hasConnections) this.connections.undo() + } + post(hist) + } + + redo( + pre: (hist: any) => void, + post: (hist: any) => void + ) { + if (this.historyIndex === this.history.length - 1) return + const hist = this.history[++this.historyIndex] + + switch (hist.type) { + case 'add': + case 'del': + case 'mov': + this.entityPositionGrid.redo() + } + + pre(hist) + + const entity = this.entity(hist.entity_number as number) + switch (hist.type) { + case 'del': + if (entity.hasConnections) this.connections.redo() + } + + this.rawEntities = hist.rawEntities + + // TODO: Refactor this somehow + if (hist.type === 'del' && entity.hasConnections && entity.connectedEntities) { + for (const entNr of entity.connectedEntities) { + EntityContainer.mappings.get(entNr).redraw() + } + } + + post(hist) + } + + operation( + entity_number: number | number[], + annotation: string, + fn: (entities: Immutable.Map) => Immutable.Map, + type: 'add' | 'del' | 'mov' | 'upd' = 'upd', + pushToHistory = true + ) { + console.log(`${entity_number} - ${annotation}`) + this.rawEntities = fn(this.rawEntities) + + if (pushToHistory) { + if (this.historyIndex < this.history.length) { + this.history = this.history.slice(0, this.historyIndex + 1) + } + this.history.push({ + entity_number, + type, + annotation, + rawEntities: this.rawEntities + }) + this.historyIndex++ + } + } + + createEntity(name: string, position: IPoint, direction: number, directionType?: string) { + if (!this.entityPositionGrid.checkNoOverlap(name, direction, position)) return false + const entity_number = this.next_entity_number++ + const data = { + entity_number, + name, + position, + direction + } + if (directionType) data.type = directionType + this.operation(entity_number, 'Added new entity', + entities => entities.set(entity_number, Immutable.fromJS(data)), + 'add' + ) + + this.entityPositionGrid.setTileData(entity_number) + + return data.entity_number + } + + removeEntity(entity_number: number, redrawCb?: (entity_number: number) => void) { + this.entityPositionGrid.removeTileData(entity_number) + let entitiesToModify: any[] = [] + if (this.entity(entity_number).hasConnections) { + entitiesToModify = this.connections.removeConnectionData(entity_number) + } + this.operation(entity_number, 'Deleted entity', + entities => entities.withMutations(map => { + + for (const i in entitiesToModify) { + const entity_number = entitiesToModify[i].entity_number + const side = entitiesToModify[i].side + const color = entitiesToModify[i].color + const index = entitiesToModify[i].index + + const a = map.getIn([entity_number, 'connections']).size === 1 + const b = map.getIn([entity_number, 'connections', side]).size === 1 + const c = map.getIn([entity_number, 'connections', side, color]).size === 1 + if (a && b && c) { + map.removeIn([entity_number, 'connections']) + } else if (b && c) { + map.removeIn([entity_number, 'connections', side]) + } else if (c) { + map.removeIn([entity_number, 'connections', side, color]) + } else { + map.removeIn([entity_number, 'connections', side, color, index]) + } + } + + map.delete(entity_number) + }), + 'del' + ) + for (const i in entitiesToModify) { + redrawCb(entitiesToModify[i].entity_number) + } + } + + getFirstRail() { + const fR = this.rawEntities.find(v => v.get('name') === 'straight-rail' || v.get('name') === 'curved-rail') + return fR ? fR.toJS() : undefined + } + + // placeBlueprint(bp, position, direction = 0, allowOverlap) { // direction is 0, 1, 2, or 3 + // const entitiesCreated = [] + // bp.entities.forEach(ent => { + // const data = ent.getData() + + // data.direction += direction * 2 + // data.direction %= 8 + + // if (direction === 3) data.position = { x: data.position.y, y: -data.position.x } + // else if (direction === 2) data.position = { x: -data.position.x, y: -data.position.y } + // else if (direction === 1) data.position = { x: -data.position.y, y: data.position.x } + + // data.position.x += position.x + // data.position.y += position.y + + // entitiesCreated.push(this.createEntityWithData(data, allowOverlap, true, true)) + // }) + + // entitiesCreated.forEach(e => { + // e.place(this.entitiesCreated) + // }) + + // bp.tiles.forEach(tile => { + // const data = tile.getData() + + // if (direction === 3) data.position = { x: data.position.y, y: -data.position.x } + // else if (direction === 2) data.position = { x: -data.position.x, y: -data.position.y } + // else if (direction === 1) data.position = { x: -data.position.y, y: data.position.x } + + // data.position.x += position.x + // data.position.y += position.y + + // this.createTileWithData(data) + // }) + + // return this + // } + + // createEntityWithData(data: any, allowOverlap: boolean, noPlace: boolean) { + // const ent = new Entity(data, this) + // if (allowOverlap || this.entityPositionGrid.checkNoOverlap(ent)) { + // if (!noPlace) ent.place(this.entities) + // this.entities.push(ent) + // return ent + // } else { + // // const otherEnt = ent.getOverlap(this.entityPositionGrid) + // // throw new Error('Entity ' + data.name + ' overlaps ' + otherEnt.name + + // // ' entity (' + data.position.x + ', ' + data.position.y + ')') + // } + // } + + createTile(name: string, position: IPoint) { + return this.createTileWithData({ name, position }) + } + + createTileWithData(data: any) { + const tile = new Tile(data, this) + const key = `${data.position.x},${data.position.y}` + if (this.tilePositionGrid[key]) this.removeTile(this.tilePositionGrid[key]) + + this.tilePositionGrid[key] = tile + this.tiles.push(tile) + return tile + } + + removeTile(tile: Tile) { + if (!tile) return false + else { + const index = this.tiles.indexOf(tile) + if (index === -1) return tile + this.tiles.splice(index, 1) + return tile + } + } + + setTileIds() { + this.tiles.forEach((tile, i) => { + tile.id = i + 1 + }) + return this + } + + // Get corner/center positions + getPosition(f: string, xcomp: any, ycomp: any) { + if (!this.rawEntities.size) return { x: 0, y: 0 } + return { + x: [...this.rawEntities.keys()].reduce( + (best: number, ent: any) => xcomp(best, this.entity(ent)[f]().x), + this.entity(1)[f]().x + ), + y: [...this.rawEntities.keys()].reduce( + (best: number, ent: any) => ycomp(best, this.entity(ent)[f]().y), + this.entity(1)[f]().y + ) + } + } + + center() { + return { + x: (this.topLeft().x + this.topRight().x) / 2, + y: (this.topLeft().y + this.bottomLeft().y) / 2 + } + } + topLeft() { return this.getPosition('topLeft', Math.min, Math.min) } + topRight() { return this.getPosition('topRight', Math.max, Math.min) } + bottomLeft() { return this.getPosition('bottomLeft', Math.min, Math.max) } + bottomRight() { return this.getPosition('bottomRight', Math.max, Math.max) } + + generateIcons(num = 2) { + // TODO: make this behave more like in factorio 2 icons default, the 2 most used items in the bp + const NUM = Math.min(this.rawEntities.size, Math.min(Math.max(num, 1), 4)) + for (let i = 0; i < NUM; i++) { + this.icons[i] = this.rawEntities[i].name + } + return this + } + + toObject() { + this.setTileIds() + // if (!this.icons.length) this.generateIcons() + const entityInfo = this.rawEntities.valueSeq().toJS() + const center = this.center() + const fR = this.getFirstRail() + if (fR) { + center.x += (fR.position.x - center.x) % 2 + center.y += (fR.position.y - center.y) % 2 + } + for (const e of entityInfo) { + e.position.x -= center.x + e.position.y -= center.y + } + const tileInfo = this.tiles.map(tile => tile.getData()) + for (const t of tileInfo) { + t.position.x -= center.x + t.position.y -= center.y + } + const iconData = this.icons.map((icon, i) => ( + { signal: { type: factorioData.getItemTypeForBp(icon), name: icon }, index: i + 1 } + )) + return { + blueprint: { + icons: iconData, + entities: this.rawEntities.size ? entityInfo : undefined, + tiles: this.tiles.length ? tileInfo : undefined, + item: 'blueprint', + version: this.version || 0, + label: this.name + } + } + } +} diff --git a/src/factorio-data/book.ts b/src/factorio-data/book.ts new file mode 100644 index 00000000..207584a5 --- /dev/null +++ b/src/factorio-data/book.ts @@ -0,0 +1,53 @@ +import { Blueprint } from './blueprint' + +export class Book { + + active_index: number + blueprints: any[] + + constructor(data: any) { + if (data) { + this.active_index = data.blueprint_book.active_index + this.blueprints = data.blueprint_book.blueprints + } else { + this.active_index = 0 + this.blueprints = [] + } + } + + addBlueprint(blueprint: Blueprint) { + this.blueprints.push(blueprint) + } + + getBlueprint(index?: number) { + const INDEX = index ? index : this.active_index + this.active_index = INDEX + + if (this.blueprints[INDEX].loaded) return this.blueprints[INDEX].loaded + + const bp = new Blueprint(this.blueprints[INDEX].blueprint) + this.blueprints[INDEX].loaded = bp + return bp + } + + toObject() { + const blueprints = [] + for (let i = 0; i < this.blueprints.length; i++) { + blueprints.push({ + index: i, + // TODO: modified instead of loaded + blueprint: this.blueprints[i].loaded ? + this.blueprints[i].loaded.toObject() : + this.blueprints[i].blueprint + }) + } + return { + blueprint_book: { + blueprints, + item: 'blueprint-book', + active_index: this.active_index, + version: 0 + } + } + } +} diff --git a/src/factorio-data/connectionsManager.ts b/src/factorio-data/connectionsManager.ts new file mode 100644 index 00000000..fd0086a0 --- /dev/null +++ b/src/factorio-data/connectionsManager.ts @@ -0,0 +1,132 @@ +import { Blueprint } from './blueprint' +import Immutable from 'immutable' + +export class ConnectionsManager { + + bp: Blueprint + connections: Immutable.Map>> + historyIndex: number + history: Array>>> + + constructor(bp: Blueprint, entity_numbers?: number[]) { + this.bp = bp + this.connections = Immutable.Map() + + // Set Bulk + if (entity_numbers) { + this.connections = this.connections.withMutations(map => { + const connections = new Map() + for (const entity_number of entity_numbers) { + const entity = this.bp.entity(entity_number) + if (entity.hasConnections) connections.set(entity_number, entity.connections) + } + connections.forEach((conn, k) => { + for (const side in conn) { + for (const color in conn[side]) { + for (const c of conn[side][color]) { + if (!map.has(`${(c as any).entity_id}-${k}`)) { + let side2 + const conn2 = connections.get((c as any).entity_id) + let found = false + for (side2 in conn2) { + for (const color2 in conn2[side2]) { + for (const c2 of conn2[side2][color2]) { + if (color === color2 && (c2 as any).entity_id === k) { + found = true + break + } + } + if (found) break + } + if (found) break + } + const key = `${k}-${(c as any).entity_id}` + if (!map.has(key)) map.set(key, Immutable.List()) + map.set(key, map.get(key).push(Immutable.fromJS({ + color, + circuit_id: (c as any).circuit_id, + entity_number_1: k, + entity_number_2: (c as any).entity_id, + entity_side_1: Number(side), + entity_side_2: Number(side2) + }))) + } + } + } + } + }) + }) + } + + this.history = [this.connections] + this.historyIndex = 0 + } + + undo() { + if (this.historyIndex === 0) return + this.connections = this.history[--this.historyIndex] + } + + redo() { + if (this.historyIndex === this.history.length - 1) return + this.connections = this.history[++this.historyIndex] + } + + operation( + fn: (connections: Immutable.Map>>) => Immutable.Map + ) { + this.connections = fn(this.connections) + if (this.historyIndex < this.history.length) { + this.history = this.history.slice(0, this.historyIndex + 1) + } + this.history.push(this.connections) + this.historyIndex++ + } + + removeConnectionData(entity_number: number) { + const entitiesToModify: Array<{ + entity_number: number; + side: string; + color: string; + index: number; + }> = [] + this.operation(connections => connections.withMutations(map => { + map.forEach((v, k) => { + const isE1 = Number(k.split('-')[0]) === entity_number + const isE2 = Number(k.split('-')[1]) === entity_number + if (isE1 || isE2) { + v.forEach(conn => { + const entNr2 = (isE1 ? conn.get('entity_number_2') : conn.get('entity_number_1')) as number + const conn2 = this.bp.entity(entNr2).connections + for (const side in conn2) { + for (const color in conn2[side]) { + for (const i in conn2[side][color]) { + if (entity_number === conn2[side][color][i].entity_id && + Number(side) === (isE1 ? conn.get('entity_side_2') : conn.get('entity_side_1')) && + color === conn.get('color') + ) { + entitiesToModify.push({ + entity_number: entNr2, + side, + color, + index: Number(i) + }) + } + } + } + } + map.deleteIn([k, map.get(k).indexOf(conn)]) + }) + } + if (map.get(k).size === 0) map.delete(k) + }) + })) + return entitiesToModify + } +} diff --git a/src/factorio-data/entity.ts b/src/factorio-data/entity.ts new file mode 100644 index 00000000..f9a893f0 --- /dev/null +++ b/src/factorio-data/entity.ts @@ -0,0 +1,324 @@ +import { Blueprint } from './blueprint' +import Immutable from 'immutable' +import factorioData from './factorioData' +import util from '../util' +import { Area } from './positionGrid' + +export default (BP: Blueprint) => { + Immutable.Map.prototype.entity = function() { + // tslint:disable-next-line:no-this-assignment + const rawEntity = this + return { + get entity_number() { return rawEntity.get('entity_number') }, + get name() { return rawEntity.get('name') }, + + get type() { return factorioData.getEntity(this.name).type }, + get entityData() { return factorioData.getEntity(this.name) }, + get recipeData() { return factorioData.getRecipe(this.name) }, + get itemData() { return factorioData.getItem(this.name) }, + get size() { return util.switchSizeBasedOnDirection(this.entityData.size, this.direction) }, + + get position() { return rawEntity.get('position').toJS() }, + get direction() { return rawEntity.get('direction') || 0 }, + get directionType() { return rawEntity.get('type') }, + get recipe() { return rawEntity.get('recipe') }, + + set recipe(recipeName: string) { + BP.operation(this.entity_number, 'Changed recipe', entities => ( + entities.withMutations(map => { + map.setIn([this.entity_number, 'recipe'], recipeName) + + const modules = this.modules + if (modules && recipeName && !factorioData.getItem('productivity-module').limitation.includes(recipeName)) { + for (const k in modules) { + if (k.includes('productivity-module')) delete modules[k] + } + map.setIn([this.entity_number, 'items'], Object.keys(modules).length ? Immutable.fromJS(modules) : undefined) + } + }) + )) + }, + + get acceptedRecipes() { + const acceptedRecipes: string[] = [] + const recipes = factorioData.getRecipes() + const cc = this.entityData.crafting_categories + for (const k in recipes) { + if (cc.includes(recipes[k].category) || (cc.includes('crafting') && !recipes[k].category)) { + const recipe = (recipes[k].normal ? recipes[k].normal : recipes[k]) + if (!((this.name === 'assembling-machine-1' && recipe.ingredients.length > 2) || + (this.name === 'assembling-machine-2' && recipe.ingredients.length > 4)) + ) { + acceptedRecipes.push(k) + } + } + } + return acceptedRecipes + }, + + get acceptedModules() { + const ommitProductivityModules = this.name === 'beacon' || + (this.recipe && !factorioData.getItem('productivity-module').limitation.includes(this.recipe)) + const items = factorioData.getItems() + const acceptedModules: string[] = [] + for (const k in items) { + if (items[k].type === 'module' && !(k.includes('productivity-module') && ommitProductivityModules)) acceptedModules.push(k) + } + return acceptedModules + }, + + set direction(direction: number) { + BP.operation(this.entity_number, 'Set entity direction to ' + direction, + entities => entities.setIn([this.entity_number, 'direction'], direction) + ) + }, + + get modules() { + const i = rawEntity.get('items') + return i ? i.toJS() : undefined + }, + + get modulesList() { + const i = rawEntity.get('items') + if (!i) return + const modules = i.toJS() + const moduleList = [] + for (const n in modules) { + for (let i = 0; i < modules[n]; i++) { + moduleList.push(n) + } + } + return moduleList + }, + + set modulesList(list: any) { + const modules = {} + for (const m of list) { + if (Object.keys(modules).includes(m)) { + modules[m]++ + } else { + modules[m] = 1 + } + } + BP.operation(this.entity_number, 'Changed modules', + entities => entities.setIn([this.entity_number, 'items'], Immutable.fromJS(modules)) + ) + }, + + get splitterInputPriority() { + return rawEntity.get('input_priority') + }, + + get splitterOutputPriority() { + return rawEntity.get('output_priority') + }, + + get splitterFilter() { + return rawEntity.get('filter') + }, + + get inserterFilters() { + const f = rawEntity.get('filters') + return f ? f.toJS() : undefined + }, + + get constantCombinatorFilters() { + const f = rawEntity.getIn(['control_behavior', 'filters']) + return f ? f.toJS() : undefined + }, + + get logisticChestFilters() { + const f = rawEntity.get('request_filters') + return f ? f.toJS() : undefined + }, + + get deciderCombinatorConditions() { + const c = rawEntity.getIn(['control_behavior', 'decider_conditions']) + return c ? c.toJS() : undefined + }, + + get arithmeticCombinatorConditions() { + const c = rawEntity.getIn(['control_behavior', 'arithmetic_conditions']) + return c ? c.toJS() : undefined + }, + + get hasConnections() { + return rawEntity.get('connections') !== undefined + }, + + get connections() { + const c = rawEntity.get('connections') + return c ? c.toJS() : undefined + }, + + get connectedEntities() { + const c = rawEntity.get('connections') + if (!c) return + const connections = c.toJS() + const entities = [] + for (const side in connections) { + for (const color in connections[side]) { + for (const c of connections[side][color]) { + entities.push(c.entity_id) + } + } + } + return entities + }, + + get chemicalPlantDontConnectOutput() { + const r = this.recipe + if (!r) return false + const rData = factorioData.getRecipe(r) + const recipe = (rData.normal ? rData.normal : rData) + if (recipe.result || recipe.results[0].type === 'item') return true + return false + }, + + get trainStopColor() { + const c = rawEntity.get('color') + return c ? c.toJS() : undefined + }, + + get operator() { + if (this.name === 'decider-combinator') { + const cb = rawEntity.get('control_behavior') + if (cb) return cb.getIn(['decider_conditions', 'comparator']) + } + if (this.name === 'arithmetic-combinator') { + const cb = rawEntity.get('control_behavior') + if (cb) return cb.getIn(['arithmetic_conditions', 'operation']) + } + return undefined + }, + + getArea(pos?: IPoint) { + return new Area({ + x: pos ? pos.x : this.position.x, + y: pos ? pos.y : this.position.y, + width: this.size.x, + height: this.size.y + }, true) + }, + + change(name: string, direction: number) { + BP.operation(this.entity_number, 'Changed Entity', entities => ( + entities.withMutations(map => { + map.setIn([this.entity_number, 'name'], name) + map.setIn([this.entity_number, 'direction'], direction) + }) + )) + }, + + move(pos: IPoint) { + const entity = BP.entity(this.entity_number) + if (!BP.entityPositionGrid.checkNoOverlap(entity.name, entity.direction, pos)) return false + BP.operation(this.entity_number, 'Moved entity', + entities => entities.setIn([this.entity_number, 'position'], Immutable.fromJS(pos)), + 'mov' + ) + BP.entityPositionGrid.setTileData(this.entity_number) + return true + }, + + rotate(notMoving: boolean, offset?: IPoint, pushToHistory = true, otherEntity?: number) { + if (!this.assemblerCraftsWithFluid && + (this.name === 'assembling-machine-2' || this.name === 'assembling-machine-3')) return false + if (notMoving && BP.entityPositionGrid.sharesCell(this.getArea())) return false + const pr = this.entityData.possible_rotations + if (!pr) return false + const newDir = pr[(pr.indexOf(this.direction) + + (notMoving && (this.size.x !== this.size.y || this.type === 'underground-belt') ? 2 : 1) + ) % pr.length + ] + if (newDir === this.direction) return false + BP.operation(otherEntity ? [this.entity_number, otherEntity] : this.entity_number, 'Rotated entity', + entities => entities.withMutations(map => { + map.setIn([this.entity_number, 'direction'], newDir) + if (notMoving && this.type === 'underground-belt') { + map.updateIn([this.entity_number, 'type'], directionType => + directionType === 'input' ? 'output' : 'input' + ) + } + if (!notMoving && this.size.x !== this.size.y) { + // tslint:disable-next-line:no-parameter-reassignment + map.updateIn([this.entity_number, 'position', 'x'], x => x += offset.x) + // tslint:disable-next-line:no-parameter-reassignment + map.updateIn([this.entity_number, 'position', 'y'], y => y += offset.y) + } + }), + 'upd', + notMoving && pushToHistory + ) + return true + }, + + topLeft() { + return { x: this.position.x - (this.size.x / 2), y: this.position.y - (this.size.y / 2) } + }, + topRight() { + return { x: this.position.x + (this.size.x / 2), y: this.position.y - (this.size.y / 2) } + }, + bottomLeft() { + return { x: this.position.x - (this.size.x / 2), y: this.position.y + (this.size.y / 2) } + }, + bottomRight() { + return { x: this.position.x + (this.size.x / 2), y: this.position.y + (this.size.y / 2) } + }, + + get assemblerCraftsWithFluid() { + return this.recipe && + factorioData.getRecipe(this.recipe).category === 'crafting-with-fluid' && + this.entityData.crafting_categories && + this.entityData.crafting_categories.includes('crafting-with-fluid') + }, + + get assemblerPipeDirection() { + if (!this.recipe) return + const recipeData = factorioData.getRecipe(this.recipe) + const rD = recipeData.normal ? recipeData.normal : recipeData + for (const io of rD.ingredients) { + if (io.type === 'fluid') { + return 'input' + } + } + if (rD.results) { + for (const io of rD.results) { + if (io.type === 'fluid') { + return 'output' + } + } + } + }, + + getWireConnectionPoint(color: string, side: number) { + const e = this.entityData + // poles + if (e.connection_points) return e.connection_points[this.direction / 2].wire[color] + // combinators + if (e.input_connection_points) { + if (side === 1) return e.input_connection_points[this.direction / 2].wire[color] + return e.output_connection_points[this.direction / 2].wire[color] + } + if (e.circuit_wire_connection_point) return e.circuit_wire_connection_point.wire[color] + + if (this.type === 'transport-belt') { + return e.circuit_wire_connection_points[ + factorioData.getBeltConnections2(BP, this.position, this.direction) * 4 + ].wire[color] + } + if (e.circuit_wire_connection_points.length === 8) { + return e.circuit_wire_connection_points[7 - this.direction].wire[color] + } + if (this.name === 'constant-combinator') { + return e.circuit_wire_connection_points[this.direction / 2].wire[color] + } + return e.circuit_wire_connection_points[3 - this.direction / 2].wire[color] + }, + + toJS() { + return rawEntity.toJS() + } + } + } +} diff --git a/src/factorio-data/factorioData.ts b/src/factorio-data/factorioData.ts new file mode 100644 index 00000000..b6b9227e --- /dev/null +++ b/src/factorio-data/factorioData.ts @@ -0,0 +1,1048 @@ +import itemBundle from '../bundles/itemBundle.json' +import recipeBundle from '../bundles/recipeBundle.json' +import entityBundle from '../bundles/entityBundle.json' +import tileBundle from '../bundles/tileBundle.json' +import { Area } from './positionGrid' +import util from '../util' +import { Blueprint } from './blueprint' + +// tslint:disable:max-file-line-count +export default { + getSpriteData, + getTile, + getItem, + getRecipe, + getEntity, + getEntities, + getItems, + getRecipes, + getTiles, + getAll, + checkEntityName, + checkItemName, + checkRecipeName, + checkTileName, + getItemTypeForBp, + getBeltConnections2 +} + +for (const e in entityBundle) { + const entity = entityBundle[e] + let func = generateGraphics(entity) + if (hasPipeCoverFeature(entity)) { + func = appendToFunc(entity, func) + } + if (hasWireConnectionFeature(entity)) { + func = appendToFunc2(entity, func) + } + func = appendToFunc3(func) + entity.generate = func +} + +function hasPipeCoverFeature(e: any) { + if (e.fluid_box || + e.fluid_boxes || + e.output_fluid_box) return true +} + +function hasWireConnectionFeature(e: any) { + if (e.type === 'transport-belt') return false + if (e.connection_points || + e.input_connection_points || + e.circuit_wire_connection_point || + e.circuit_wire_connection_points) return true +} + +function appendToFunc(e: any, func: (data: any) => any) { + return (data: any) => { + const ret = func(data) + generateCovers(e, data, ret) + return ret + } +} + +function appendToFunc2(e: any, func: (data: any) => any) { + return (data: any) => { + const ret = func(data) + generateConnection(e, data, ret) + return ret + } +} + +function appendToFunc3(func: (data: any) => any) { + return (data: any) => { + const ret = func(data) + for (let i = 0; i < ret.length; i++) { + ret[i] = data.hr && ret[i].hr_version ? ret[i].hr_version : ret[i] + if (ret[i].apply_runtime_tint && !ret[i].color) { + ret[i].color = { + r: 0.73, + g: 0.59, + b: 0.44, + a: 0.75 + } + } + } + return ret + } +} + +function getSpriteData(entity: any, hr: boolean, bp: Blueprint) { + return entityBundle[entity.name].generate({ + hr, + dir: entity.direction, + + bp, + position: entity.position, + hasConnections: entity.hasConnections, + + dirType: entity.directionType, + operator: entity.operator, + assemblerCraftsWithFluid: entity.assemblerCraftsWithFluid, + assemblerPipeDirection: entity.assemblerPipeDirection, + trainStopColor: entity.trainStopColor, + chemicalPlantDontConnectOutput: entity.chemicalPlantDontConnectOutput + }) +} + +function checkNameInBundle(name: string, bundle: any/*, bundleName*/) { + // if (typeof name !== 'string') throw new Error('Expected name to be a string, instead got ' + name) + // if (!bundle[name]) throw new Error(name + ' does not exist in ' + bundleName + '!') + // return name + if (bundle[name]) return true + return false +} + +function checkItemName(name: string) { + return checkNameInBundle(name, itemBundle) +} + +function checkRecipeName(name: string) { + return checkNameInBundle(name, recipeBundle) +} + +function checkEntityName(name: string) { + return checkNameInBundle(name, entityBundle) +} + +function checkTileName(name: string) { + return checkNameInBundle(name, tileBundle) +} + +function getItem(name: string) { + return itemBundle[name] || undefined +} + +function getRecipe(name: string) { + return recipeBundle[name] || undefined +} + +function getEntity(name: string) { + return entityBundle[name] || undefined +} + +function getTile(name: string) { + return tileBundle[name] || undefined +} + +function getItems() { + return itemBundle +} + +function getRecipes() { + return recipeBundle +} + +function getEntities() { + return entityBundle +} + +function getTiles() { + return tileBundle +} + +function getAll(name: string) { + return { + item: getItem(name), + recipe: getRecipe(name), + entity: getEntity(name) + } +} + +function getItemTypeForBp(name: string) { + const type = getItem(name).type + if (type === 'virtual-signal') return 'virtual' + if (type === 'fluid') return 'fluid' + return 'item' +} + +function getPipeCovers(e: any) { + if (e.fluid_box && e.output_fluid_box) { + return e.fluid_box.pipe_covers + } + if (e.fluid_box) { + return e.fluid_box.pipe_covers + } + if (e.output_fluid_box) { + return e.output_fluid_box.pipe_covers + } + if (e.fluid_boxes) { + for (const fb of e.fluid_boxes) { + if (typeof fb === 'object') { + return fb.pipe_covers + } + } + } +} + +function generateConnection(e: any, data: any, out: any[]) { + if (data.hasConnections) { + if (e.circuit_connector_sprites) { + const temp = e.circuit_connector_sprites instanceof Array ? + e.circuit_connector_sprites[ + e.circuit_connector_sprites.length === 8 ? (7 - data.dir) : (3 - data.dir / 2) + ] : e.circuit_connector_sprites + out.push(temp.connector_main) + out.push(temp.wire_pins) + out.push(temp.led_blue_off) + } + } +} + +function generateCovers(e: any, data: IEntityData, out: any[]) { + if (e.name === 'pipe' || + ((e.name === 'assembling-machine-2' || e.name === 'assembling-machine-3') && + !data.assemblerCraftsWithFluid) + ) return + + const connections = getPipeConnectionPoints(e, data.dir, data.assemblerPipeDirection) + if (connections) { + for (const connection of connections) { + + const dir = Math.abs(connection.x) > Math.abs(connection.y) ? + (Math.sign(connection.x) === 1 ? 2 : 6) : + (Math.sign(connection.y) === 1 ? 4 : 0) + + function needsCover() { + if (e.name === 'chemical-plant' && data.chemicalPlantDontConnectOutput && + data.dir === (dir + 4) % 8) return true + + const pos = { + x: Math.floor(data.position.x + connection.x), + y: Math.floor(data.position.y + connection.y) + } + + const ent = data.bp.entity(data.bp.entityPositionGrid.getCellAtPosition(pos)) + if (!ent) return true + + if (ent.name === 'chemical-plant' && ent.chemicalPlantDontConnectOutput && + ent.direction === dir) return true + + if (ent.name === 'pipe' || + ent.name === 'pipe-to-ground' || + ent.entityData.fluid_box || + ent.entityData.output_fluid_box || + ent.entityData.fluid_boxes) { + + const connections2 = getPipeConnectionPoints( + ent.entityData, ent.direction, ent.assemblerPipeDirection + ) + for (const connection2 of connections2) { + const p2 = { ...pos } + switch (dir) { + case 0: p2.y += 1; break + case 2: p2.x -= 1; break + case 4: p2.y -= 1; break + case 6: p2.x += 1 + } + if (p2.x === Math.floor(ent.position.x + connection2.x) && + p2.y === Math.floor(ent.position.y + connection2.y)) return false + } + } + return true + } + + if (!data.bp || needsCover()) { + let temp = getPipeCovers(e)[dir].layers[0] + temp = util.add_to_shift(connection, util.duplicate(temp)) + if (dir === 4) { + out.push(temp) + } else { + out.unshift(temp) + } + } + } + } +} + +function getPipeConnectionPoints(e: any, dir: number, assemblerPipeDirection: string) { + function getConn() { + if (e.fluid_box && e.output_fluid_box) { + return [...e.fluid_box.pipe_connections, ...e.output_fluid_box.pipe_connections] + } + if (e.fluid_box) { + if (e.name === 'pipe-to-ground') { + return [e.fluid_box.pipe_connections[0]] + } + return e.fluid_box.pipe_connections + } + if (e.output_fluid_box) { + return e.output_fluid_box.pipe_connections + } + if (e.fluid_boxes) { + const conn = [] + for (const fb of e.fluid_boxes) { + if (typeof fb === 'object') { + conn.push(fb.pipe_connections[0]) + } + } + return conn + } + return undefined + } + const connections = getConn() + if (!connections) return undefined + const positions = [] + // tslint:disable-next-line:prefer-switch + if (e.name === 'pumpjack') { + positions.push({ x: connections[0].positions[dir / 2][0], y: connections[0].positions[dir / 2][1] }) + } else if (e.name === 'assembling-machine-2' || e.name === 'assembling-machine-3') { + positions.push(util.rotatePointBasedOnDir( + connections[assemblerPipeDirection === 'input' ? 0 : 1].position, dir + )) + } else { + for (const connection of connections) { + positions.push(util.rotatePointBasedOnDir(connection.position, dir)) + } + } + return positions +} + +function getHeatConectionPoints(e: any) { + // nuclear reactor + if (e.heat_buffer) return e.heat_buffer.connections + // heat exchanger + if (e.energy_source) return e.energy_source.connections +} + +function getHeatConnections(position: IPoint, bp: Blueprint) { + return bp.entityPositionGrid.getSurroundingEntities(new Area(position), (entnr, _, X, Y) => { + const entity = bp.entity(entnr) + // tslint:disable-next-line:prefer-switch + if (entity.name === 'heat-pipe') return true + else if (entity.name === 'heat-exchanger' || entity.name === 'nuclear-reactor') { + const connections = getHeatConectionPoints(entity.entityData) + for (const connection of connections) { + const offset = util.rotatePointBasedOnDir(connection.position, entity.direction) + if (X === Math.floor(entity.position.x + offset.x) && + Y === Math.floor(entity.position.y + offset.y)) return true + } + } + }) +} + +function getBeltConnections2(bp: Blueprint, position: IPoint, dir: number) { + const directions = bp.entityPositionGrid.getSurroundingEntities(new Area(position), entnr => { + const entity = bp.entity(entnr) + if (entity.type === 'transport-belt' || + entity.type === 'splitter' || + (entity.type === 'underground-belt' && + entity.directionType === 'output')) return entity.direction + }, dir) + + const foundR = directions[1] !== false && (directions[1] + 2) % 8 === dir + const foundL = directions[3] === (dir + 2) % 8 + + if ((dir === directions[2] && (foundR || foundL)) || (foundR && foundL)) { + return 0 + } + if (!foundR && !foundL) { + if (dir === 0 || dir === 4) return 2 + return 1 + } + switch (dir) { + case 0: if (foundR) return 5; else return 6 + case 2: if (foundR) return 3; else return 5 + case 4: if (foundR) return 4; else return 3 + case 6: if (foundR) return 6; else return 4 + } +} + +function generateGraphics(e: any) { + + if (e.name.search('combinator') !== -1) { + return (data: IEntityData) => { + function getBaseSprite() { return e.sprites[data.dir].layers[0] } + + if (e.name === 'decider-combinator' || e.name === 'arithmetic-combinator') { + function mapSymbolToSpriteName() { + if (!data.operator) return e.name === 'decider-combinator' ? 'less' : 'multiply' + switch (data.operator) { + case '<': return 'less' + case '>': return 'greater' + case '≤': return 'less_or_equal' + case '≥': return 'greater_or_equal' + case '=': return 'equal' + case '≠': return 'not_equal' + + case '+': return 'plus' + case '-': return 'minus' + case '*': return 'multiply' + case '/': return 'divide' + case '%': return 'modulo' + case '^': return 'power' + case '<<': return 'left_shift' + case '>>': return 'right_shift' + case 'AND': return 'and' + case 'OR': return 'or' + case 'XOR': return 'xor' + } + } + return [getBaseSprite(), e[mapSymbolToSpriteName() + '_symbol_sprites'][data.dir]] + } + return [getBaseSprite()] + } + } + + if (e.name.search('assembling-machine') !== -1) { + return (data: IEntityData) => { + if ( + (e.name === 'assembling-machine-2' || e.name === 'assembling-machine-3') && + data.assemblerCraftsWithFluid + ) { + const pipeDirection = data.assemblerPipeDirection === 'input' ? data.dir : (data.dir + 4) % 8 + const out = [ + e.animation.layers[0], + util.add_to_shift( + getPipeConnectionPoints(e, data.dir, data.assemblerPipeDirection)[0], + util.duplicate(e.fluid_boxes[0].pipe_picture[pipeDirection]) + ) + ] + if (pipeDirection === 0) return [out[1], out[0]] + return out + } + return [e.animation.layers[0]] + } + } + + switch (e.name) { + case 'accumulator': return () => [e.picture] + case 'solar-panel': return () => [e.picture.layers[0]] + case 'radar': return () => [e.pictures.layers[0]] + case 'small-lamp': return () => [e.picture_off.layers[0]] + case 'land-mine': return () => [e.picture_set] + case 'programmable-speaker': return () => [e.sprite.layers[0]] + case 'power-switch': return () => [e.power_on_animation] + case 'beacon': return () => [e.base_picture, e.animation] + case 'lab': return () => [e.off_animation.layers[0]] + + case 'offshore-pump': return (data: IEntityData) => [e.picture[data.dir]] + case 'pipe-to-ground': return (data: IEntityData) => [e.pictures[data.dir]] + case 'burner-mining-drill': return (data: IEntityData) => [e.animations[data.dir].layers[0]] + + case 'pumpjack': return (data: IEntityData) => [ + util.duplicateAndSetPropertyUsing(e.base_picture.sheets[0], 'x', 'width', data.dir / 2), + e.animations[0].layers[0] + ] + case 'storage-tank': return (data: IEntityData) => [ + e.pictures.window_background, + util.set_property_using(util.duplicate(e.pictures.picture.sheets[0]), 'x', data.dir === 2 ? 'width' : undefined) + ] + case 'centrifuge': return () => [ + e.idle_animation.layers[0], + e.idle_animation.layers[2], + e.idle_animation.layers[4] + ] + case 'roboport': return () => [e.base.layers[0], e.door_animation_up, e.door_animation_down, e.base_animation] + case 'rocket-silo': return () => [ + e.door_back_sprite, + e.door_front_sprite, + e.base_day_sprite, + e.arm_01_back_animation, + e.arm_02_right_animation, + e.arm_03_front_animation, + e.satellite_animation + ] + + case 'electric-mining-drill': + case 'pump': return (data: IEntityData) => [e.animations[data.dir]] + case 'boiler': return (data: IEntityData) => [e.structure[data.dir].layers[0]] + case 'heat-exchanger': return (data: IEntityData) => { + let needsEnding = true + if (data.bp) { + const conn = getHeatConectionPoints(e)[0] + const pos = util.rotatePointBasedOnDir(conn.position, data.dir) + const c = getHeatConnections({ + x: Math.floor(data.position.x + pos.x), + y: Math.floor(data.position.y + pos.y) + }, data.bp) + needsEnding = !c[(data.dir + conn.direction) % 8 / 2] + } + if (needsEnding) { + return [ + util.add_to_shift(util.rotatePointBasedOnDir([0, 1.5], data.dir), + util.duplicate(e.energy_source.pipe_covers[(data.dir + 4) % 8]) + ), + e.structure[data.dir].layers[0] + ] + } + return [e.structure[data.dir].layers[0]] + } + case 'oil-refinery': + case 'chemical-plant': return (data: IEntityData) => [e.animation[data.dir].layers[0]] + case 'steam-engine': + case 'steam-turbine': return (data: IEntityData) => [ + data.dir === 0 ? e.vertical_animation.layers[0] : e.horizontal_animation.layers[0] + ] + case 'gun-turret': + case 'laser-turret': return (data: IEntityData) => [ + ...e.base_picture.layers, + util.duplicateAndSetPropertyUsing(e.folded_animation.layers[0], 'y', 'height', data.dir / 2), + util.duplicateAndSetPropertyUsing(e.folded_animation.layers[e.name === 'laser-turret' ? 2 : 1], 'y', 'height', data.dir / 2) + ] + + case 'train-stop': return (data: IEntityData) => { + const dir = data.dir + let ta = util.duplicate(e.top_animations[dir].layers[1]) + ta = util.set_property(ta, 'color', data.trainStopColor ? data.trainStopColor : e.color) + return [ + e.rail_overlay_animations[dir], + e.animations[dir].layers[0], + e.top_animations[dir].layers[0], + ta, + e.light1.picture[dir], + e.light2.picture[dir] + ] + } + case 'flamethrower-turret': return (data: IEntityData) => { + const dir = data.dir + let pipe = entityBundle['pipe'] + pipe = dir === 0 || dir === 4 ? pipe.pictures.straight_horizontal : pipe.pictures.straight_vertical + const p1 = util.add_to_shift(util.rotatePointBasedOnDir([0.5, 1], dir), util.duplicate(pipe)) + const p2 = util.add_to_shift(util.rotatePointBasedOnDir([-0.5, 1], dir), util.duplicate(pipe)) + return [ + p1, + p2, + e.base_picture[dir].layers[0], + e.base_picture[dir].layers[1], + e.folded_animation[dir].layers[0], + e.folded_animation[dir].layers[1] + ] + } + case 'artillery-turret': return (data: IEntityData) => { + const d = data.dir * 2 + e.cannon_base_pictures.layers[0].filename = e.cannon_base_pictures.layers[0].filenames[d] + e.cannon_base_pictures.layers[0].hr_version.filename = e.cannon_base_pictures.layers[0].hr_version.filenames[d] + e.cannon_barrel_pictures.layers[0].filename = e.cannon_barrel_pictures.layers[0].filenames[d] + e.cannon_barrel_pictures.layers[0].hr_version.filename = e.cannon_barrel_pictures.layers[0].hr_version.filenames[d] + return [ + e.base_picture.layers[0], + e.cannon_barrel_pictures.layers[0], + e.cannon_base_pictures.layers[0] + ] + } + case 'straight-rail': + case 'curved-rail': return (data: IEntityData) => { + const dir = data.dir + function getBaseSprites() { + function getRailSpriteForDir() { + const p = e.pictures + if (e.name === 'straight-rail') { + switch (dir) { + case 0: return p.straight_rail_vertical + case 1: return p.straight_rail_diagonal_right_top + case 2: return p.straight_rail_horizontal + case 3: return p.straight_rail_diagonal_right_bottom + case 4: return p.straight_rail_vertical + case 5: return p.straight_rail_diagonal_left_bottom + case 6: return p.straight_rail_horizontal + case 7: return p.straight_rail_diagonal_left_top + } + } else { + switch (dir) { + case 0: return p.curved_rail_vertical_left_bottom + case 1: return p.curved_rail_vertical_right_bottom + case 2: return p.curved_rail_horizontal_left_top + case 3: return p.curved_rail_horizontal_left_bottom + case 4: return p.curved_rail_vertical_right_top + case 5: return p.curved_rail_vertical_left_top + case 6: return p.curved_rail_horizontal_right_bottom + case 7: return p.curved_rail_horizontal_right_top + } + } + } + const ps = getRailSpriteForDir() + return [ + ps.stone_path_background, + ps.stone_path, + ps.ties, + ps.backplates, + ps.metals + ] + } + + if (data.bp && e.name === 'straight-rail' && (dir === 0 || dir === 2)) { + const size = util.switchSizeBasedOnDirection(e.size, dir) + const gates = data.bp.entityPositionGrid.foreachOverlap(new Area({ + x: data.position.x, + y: data.position.y, + width: size.x, + height: size.y + }, true), (entnr: number) => { + const ent = data.bp.entity(entnr) + if (ent && ent.name === 'gate') return true + }, true) + if (gates) { + const railBases: any[] = [] + function assignShiftAndPushPicture(shift: number[], picture: string) { + railBases.push(util.add_to_shift(shift, util.duplicate(entityBundle['gate'][picture]))) + } + if (dir === 0) { + if (gates[0] || gates[2]) { + assignShiftAndPushPicture([0, -0.5], 'horizontal_rail_base') + assignShiftAndPushPicture([0, -0.5], 'horizontal_rail_base_mask') + } + if (gates[1] || gates[3]) { + assignShiftAndPushPicture([0, 0.5], 'horizontal_rail_base') + assignShiftAndPushPicture([0, 0.5], 'horizontal_rail_base_mask') + } + } + if (dir === 2) { + if (gates[0] || gates[1]) { + assignShiftAndPushPicture([-0.5, 0], 'vertical_rail_base') + assignShiftAndPushPicture([-0.5, 0], 'vertical_rail_base_mask') + } + if (gates[2] || gates[3]) { + assignShiftAndPushPicture([0.5, 0], 'vertical_rail_base') + assignShiftAndPushPicture([0.5, 0], 'vertical_rail_base_mask') + } + } + return [...getBaseSprites(), ...railBases] + } + } + return getBaseSprites() + } + case 'rail-signal': + case 'rail-chain-signal': return (data: IEntityData) => { + const dir = data.dir + let rp = util.duplicateAndSetPropertyUsing(e.rail_piece, 'x', 'width', dir) + let a = util.duplicateAndSetPropertyUsing(e.animation, 'y', 'height', dir) + if (e.name === 'rail-chain-signal') { + function getRightShift() { + switch (dir) { + case 0: return [1, 0] + case 1: return [1, 1] + case 2: return [0, 1] + case 3: return [-1, 1] + case 4: return [-2, 0] + case 5: return [-1, -1] + case 6: return [0, -2] + case 7: return [1, -1] + } + } + const s = getRightShift() + rp = util.add_to_shift(s, rp) + a = util.add_to_shift(s, a) + } + return [rp, a] + } + case 'nuclear-reactor': return (data: IEntityData) => { + const conn = e.heat_buffer.connections + const patches = [] + for (let i = 0; i < conn.length; i++) { + let patchSheet = e.connection_patches_disconnected.sheet + if (data.bp) { + const c = getHeatConnections({ + x: Math.floor(data.position.x) + conn[i].position[0], + y: Math.floor(data.position.y) + conn[i].position[1] + }, data.bp) + if (c[conn[i].direction / 2]) { + patchSheet = e.connection_patches_connected.sheet + } + } + patchSheet = util.duplicateAndSetPropertyUsing(patchSheet, 'x', 'width', i) + patchSheet = util.add_to_shift(conn[i].position, patchSheet) + patches.push(patchSheet) + } + return [...patches, e.lower_layer_picture, e.picture.layers[0]] + } + case 'stone-wall': return (data: IEntityData) => { + function getBaseSprite() { + function getRandomPic(type: string) { + if (e.pictures[type] instanceof Array) { + return e.pictures[type][util.getRandomInt(0, e.pictures[type].length - 1)].layers[0] + } + return e.pictures[type].layers[0] + } + if (data.bp) { + const conn = data.bp.entityPositionGrid.getSurroundingEntities(new Area(data.position), (entnr: number, D: number) => { + const entity = data.bp.entity(entnr) + if (entity.name === 'stone-wall' || (entity.name === 'gate' && entity.direction === D % 4)) return true + }) + + if (conn[1] && conn[2] && conn[3]) return getRandomPic('t_up') + if (conn[1] && conn[2]) return getRandomPic('corner_right_down') + if (conn[2] && conn[3]) return getRandomPic('corner_left_down') + if (conn[1] && conn[3]) return getRandomPic('straight_horizontal') + if (conn[1]) return getRandomPic('ending_right') + if (conn[2]) return getRandomPic('straight_vertical') + if (conn[3]) return getRandomPic('ending_left') + } + return getRandomPic('single') + } + + if (data.bp) { + let found = false + data.bp.entityPositionGrid.getSurroundingEntities(new Area(data.position), (entnr: any, D: number) => { + const entity = data.bp.entity(entnr) + if (entity.name === 'gate' && entity.direction === D % 4) found = true + }) + if (found && !data.hasConnections) return [getBaseSprite(), e.wall_diode_red] + } + return [getBaseSprite()] + } + case 'gate': return (data: IEntityData) => { + const dir = data.dir + function getBaseSprites() { + if (data.bp) { + const size = util.switchSizeBasedOnDirection(e.size, dir) + const rail = data.bp.entityPositionGrid.getFirstFromArea(new Area({ + x: data.position.x, + y: data.position.y, + width: size.x, + height: size.y + }, true), (entnr: number) => { + const ent = data.bp.entity(entnr) + if (ent.name === 'straight-rail') return ent + }) + if (rail) { + if (dir === 0) { + if (rail.position.y > data.position.y) return [e.vertical_rail_animation_left.layers[0]] + return [e.vertical_rail_animation_right.layers[0]] + } else { + if (rail.position.x > data.position.x) return [e.horizontal_rail_animation_left.layers[0]] + return [e.horizontal_rail_animation_right.layers[0]] + } + } + } + + if (dir === 0) return [...e.vertical_base.layers, e.vertical_animation.layers[0]] + return [...e.horizontal_base.layers, e.horizontal_animation.layers[0]] + } + if (data.bp) { + const out = getBaseSprites() + const conn = data.bp.entityPositionGrid.getSurroundingEntities(new Area(data.position), (entnr: any, D: number) => { + const entity = data.bp.entity(entnr) + if (entity.name === 'stone-wall' && dir === D % 4) return true + }) + for (let i = 0; i < conn.length; i++) { + if (conn[i]) { + const wp = entityBundle['gate'].wall_patch[(i * 2 + 4) % 8].layers[0] + if (i === 0) { + out.unshift(wp) + } else { + out.push(wp) + } + } + } + return out + } + return getBaseSprites() + } + case 'pipe': return (data: IEntityData) => { + if (data.bp) { + const conn = data.bp.entityPositionGrid.getSurroundingEntities(new Area(data.position), (entnr: any, D: number) => { + const entity = data.bp.entity(entnr) + if (entity.name === 'pipe') return true + if (entity.name === 'pipe-to-ground' && entity.direction === (D + 4) % 8) return true + if ((entity.name === 'assembling-machine-2' || entity.name === 'assembling-machine-3') && + !entity.assemblerCraftsWithFluid) return false + if (entity.name === 'chemical-plant' && entity.chemicalPlantDontConnectOutput && + entity.direction === D) return false + const ed = entity.entityData + if (ed.fluid_box || ed.output_fluid_box || ed.fluid_boxes) { + const connections = getPipeConnectionPoints(ed, entity.direction, entity.assemblerPipeDirection) + for (const connection of connections) { + if (Math.floor(data.position.x) === Math.floor(entity.position.x + connection.x) && + Math.floor(data.position.y) === Math.floor(entity.position.y + connection.y)) { + return true + } + } + } + }) + + if (conn[0] && conn[1] && conn[2] && conn[3]) return [e.pictures.cross] + if (conn[0] && conn[1] && conn[3]) return [e.pictures.t_up] + if (conn[1] && conn[2] && conn[3]) return [e.pictures.t_down] + if (conn[0] && conn[1] && conn[2]) return [e.pictures.t_right] + if (conn[0] && conn[2] && conn[3]) return [e.pictures.t_left] + if (conn[0] && conn[2]) return [e.pictures.straight_vertical] + if (conn[1] && conn[3]) return [e.pictures.straight_horizontal] + if (conn[0] && conn[1]) return [e.pictures.corner_up_right] + if (conn[0] && conn[3]) return [e.pictures.corner_up_left] + if (conn[1] && conn[2]) return [e.pictures.corner_down_right] + if (conn[2] && conn[3]) return [e.pictures.corner_down_left] + if (conn[0]) return [e.pictures.ending_up] + if (conn[2]) return [e.pictures.ending_down] + if (conn[1]) return [e.pictures.ending_right] + if (conn[3]) return [e.pictures.ending_left] + } + return [e.pictures.straight_vertical_single] + } + case 'heat-pipe': return (data: IEntityData) => { + function getRandomPic(type: string) { + if (e.connection_sprites[type].length === 1) return [e.connection_sprites[type][0]] + return [e.connection_sprites[type][util.getRandomInt(0, e.connection_sprites[type].length - 1)]] + } + if (data.bp) { + const conn = getHeatConnections(data.position, data.bp) + if (conn[0] && conn[1] && conn[2] && conn[3]) return getRandomPic('cross') + if (conn[0] && conn[1] && conn[3]) return getRandomPic('t_up') + if (conn[1] && conn[2] && conn[3]) return getRandomPic('t_down') + if (conn[0] && conn[1] && conn[2]) return getRandomPic('t_right') + if (conn[0] && conn[2] && conn[3]) return getRandomPic('t_left') + if (conn[0] && conn[2]) return getRandomPic('straight_vertical') + if (conn[1] && conn[3]) return getRandomPic('straight_horizontal') + if (conn[0] && conn[1]) return getRandomPic('corner_right_up') + if (conn[0] && conn[3]) return getRandomPic('corner_left_up') + if (conn[1] && conn[2]) return getRandomPic('corner_right_down') + if (conn[2] && conn[3]) return getRandomPic('corner_left_down') + if (conn[0]) return getRandomPic('ending_up') + if (conn[2]) return getRandomPic('ending_down') + if (conn[1]) return getRandomPic('ending_right') + if (conn[3]) return getRandomPic('ending_left') + } + return getRandomPic('single') + } + } + + switch (e.type) { + case 'electric-pole': return () => [e.pictures] + case 'furnace': return () => [e.animation.layers[0]] + case 'container': + case 'logistic-container': return () => [e.picture] + + case 'splitter': return (data: IEntityData) => { + const dir = data.dir + const nP = e.name.split('-') + const beltType = nP.length === 1 ? '' : nP[0] + '-' + + let belt = entityBundle[beltType + 'transport-belt'] + belt = dir === 0 || dir === 4 ? belt.belt_vertical : belt.belt_horizontal + + belt = util.duplicate(belt) + if (dir === 4) belt = util.set_property(belt, 'flipY', true) + if (dir === 6) belt = util.set_property(belt, 'flipX', true) + + let belt2 = util.duplicate(belt) + belt = util.add_to_shift(util.rotatePointBasedOnDir([-0.5, 0], dir), belt) + belt2 = util.add_to_shift(util.rotatePointBasedOnDir([0.5, 0], dir), belt2) + + return [belt, belt2, e.structure[dir]] + } + case 'underground-belt': return (data: IEntityData) => { + const dir = data.dir + let belt = dir === 0 || dir === 4 ? e.belt_vertical : e.belt_horizontal + + belt = util.duplicate(belt) + if (dir === 6) belt = util.set_property(belt, 'flipX', true) + if (dir === 4) belt = util.set_property(belt, 'flipY', true) + belt = util.set_property(belt, dir === 2 || dir === 6 ? 'divW' : 'divH', 2) + + const dirType = data.dirType === 'output' ? -1 : 1 + belt = util.add_to_shift([ + (dir === 2 ? -1 : (dir === 6 ? 1 : 0)) * dirType * (dirType === 1 ? 0.35 : 0.2), + // * ((data.hr ? belt.hr_version.width : belt.width) / 8 * dirType) / 32, + (dir === 4 ? -1 : (dir === 0 ? 1 : 0)) * dirType * (dirType === 1 ? 0.2 : 0.35) + // * ((data.hr ? belt.hr_version.height : belt.height) / 8 * dirType) / 32 + ], belt) + return [ + belt, + util.duplicateAndSetPropertyUsing( + dirType === 1 ? e.structure.direction_in.sheet : e.structure.direction_out.sheet, + 'x', + 'width', + (dirType === 1 ? dir : ((dir + 4) % 8)) / 2 + ) + ] + } + case 'transport-belt': return (data: IEntityData) => { + const dir = data.dir + function getBeltConnections() { + const directions = data.bp.entityPositionGrid.getSurroundingEntities(new Area(data.position), (entnr: number) => { + const entity = data.bp.entity(entnr) + if (entity.type === 'transport-belt' || + entity.type === 'splitter' || + (entity.type === 'underground-belt' && + entity.directionType === 'output')) { + return entity.direction + } + }, dir) + + const rightEntDir = directions[1] + const leftEntDir = directions[3] + + if (dir === directions[2]) return false + let found = false + if (rightEntDir !== false && (rightEntDir + 2) % 8 === dir) { + found = true + } + if (leftEntDir === (dir + 2) % 8) { + if (found) { + return false + } else { + return leftEntDir + } + } + if (found) { + return rightEntDir + } + return false + } + + let belt = dir === 0 || dir === 4 ? e.belt_vertical : e.belt_horizontal + + if (data.bp) { + belt = util.duplicate(belt) + const res = getBeltConnections() + if (res !== false) { + const temp = res === 0 || res === 4 + belt = util.set_property(belt, 'rot', (res + (temp ? 0 : 2)) / 2) + belt = util.set_property_using(belt, 'y', 'height', + (temp ? 11 : 8) * (data.hr && e.name !== 'transport-belt' ? 2 : 1)) + if (res === (dir + 2) % 8) { + belt = util.set_property(belt, temp ? 'flipX' : 'flipY', true) + } + } else { + if (dir === 6) { + belt = util.set_property(belt, 'flipX', true) + } + if (dir === 4) { + belt = util.set_property(belt, 'flipY', true) + } + } + } else { + if (dir === 6) { + belt = util.set_property(util.duplicate(belt), 'flipX', true) + } + if (dir === 4) { + belt = util.set_property(util.duplicate(belt), 'flipY', true) + } + } + + if (data.hasConnections) { + let frame = e.connector_frame_sprites.frame_main.sheet + frame = util.duplicate(frame) + frame = util.set_property_using(frame, 'x', 'width') + frame = util.set_property_using(frame, 'y', 'height', + data.bp ? getBeltConnections2(data.bp, data.position, dir) : (dir === 0 || dir === 4 ? 2 : 1) + ) + return [belt, frame] + } + return [belt] + } + case 'inserter': return (data: IEntityData) => { + const dir = data.dir + let ho = util.duplicate(e.hand_open_picture) + let hb = util.duplicate(e.hand_base_picture) + const hoMod = { + rot: 0, + height_divider: 1, + x: 0, + y: 0 + } + const hbMod = { ...hoMod } + const am = 0.5 + if (e.name === 'long-handed-inserter') { + switch (dir) { + case 0: + hoMod.rot = 2 + hoMod.height_divider = 3 + hoMod.y = -am * 1.5 + + hbMod.y = -am + break + case 2: + hoMod.rot = 1.7 + hoMod.height_divider = 1.5 + hoMod.x = am + hoMod.y = -am / 1.25 + + hbMod.rot = 0.3 + hbMod.x = am / 3 + hbMod.y = -am / 1.5 + break + case 4: + hoMod.rot = 2 + hoMod.height_divider = 1.25 + hoMod.y = am / 1.75 + + hbMod.rot = 0 + hbMod.height_divider = 1.75 + hbMod.y = -am / 1.75 + break + case 6: + hoMod.rot = 2.3 + hoMod.height_divider = 1.5 + hoMod.x = -am + hoMod.y = -am / 1.25 + + hbMod.rot = 3.7 + hbMod.x = -am / 3 + hbMod.y = -am / 1.5 + } + } else { + switch (dir) { + case 6: + hoMod.rot = 2.5 + hoMod.height_divider = 2 + hoMod.x = -am + hoMod.y = -am * 0.5 + + hbMod.rot = 3.5 + hbMod.height_divider = 1.5 + hbMod.x = -am / 3 + hbMod.y = -am / 2 + break + case 2: + hoMod.rot = 1.5 + hoMod.height_divider = 2 + hoMod.x = am + hoMod.y = -am * 0.5 + + hbMod.rot = 0.5 + hbMod.height_divider = 1.5 + hbMod.x = am / 3 + hbMod.y = -am / 2 + break + case 4: + hoMod.rot = 2 + hoMod.height_divider = 1.75 + hoMod.y = am / 1.5 + + hbMod.rot = 2 + hbMod.height_divider = 5 + break + case 0: + hoMod.height_divider = 3 + hoMod.y = -am * 1.5 + + hbMod.height_divider = 1.25 + hbMod.y = -am / 1.5 + } + } + ho = util.set_property(ho, 'rot', hoMod.rot) + ho = util.set_property(ho, 'height_divider', hoMod.height_divider) + ho = util.add_to_shift(hoMod, ho) + + hb = util.set_property(hb, 'rot', hbMod.rot) + hb = util.set_property(hb, 'height_divider', hbMod.height_divider) + hb = util.add_to_shift(hbMod, hb) + return [ + util.duplicateAndSetPropertyUsing(e.platform_picture.sheet, 'x', 'width', ((dir + 4) % 8) / 2), + ho, + hb + ] + } + } +} diff --git a/src/factorio-data/positionGrid.ts b/src/factorio-data/positionGrid.ts new file mode 100644 index 00000000..d9739eae --- /dev/null +++ b/src/factorio-data/positionGrid.ts @@ -0,0 +1,361 @@ +import { Blueprint } from './blueprint' +import util from '../util' +import factorioData from './factorioData' +import Immutable from 'immutable' +import { isNumber } from 'util' + +export class Area { + y: number + x: number + height: number + width: number + + constructor(data: any, posIsCenter?: boolean) { + this.width = data.width || 1 + this.height = data.height || 1 + if (posIsCenter) { + this.x = Math.round(data.x - this.width / 2) + this.y = Math.round(data.y - this.height / 2) + } else { + this.x = Math.floor(data.x) + this.y = Math.floor(data.y) + } + } +} + +export class PositionGrid { + + static tileDataAction( + grid: Immutable.Map>, + area: Area, + fn: (key: string, cell: number | Immutable.List) => boolean | void, + returnEmptyCells = false + ) { + let stop = false + for (let x = area.x, maxX = area.x + area.width; x < maxX; x++) { + for (let y = area.y, maxY = area.y + area.height; y < maxY; y++) { + const key = `${x},${y}` + const cell = grid.get(key) + if (cell || returnEmptyCells) stop = !!fn(key, cell) + if (stop) break + } + if (stop) break + } + } + + bp: Blueprint + grid: Immutable.Map> + historyIndex: number + history: Array>> + + constructor(bp: Blueprint, entity_numbers?: number[]) { + this.bp = bp + this.grid = Immutable.Map() + + // Set Bulk + if (entity_numbers) { + this.grid = this.grid.withMutations(map => { + for (const entity_number of entity_numbers) { + const entity = this.bp.entity(entity_number) + if (!entity.entityData.flags.includes('placeable-off-grid')) { + PositionGrid.tileDataAction(map, entity.getArea(), (key, cell) => { + if (cell) { + if (isNumber(cell)) { + map.set(key, Immutable.List([ + cell, + entity_number + ])) + } else { + map.setIn([key, cell.size], entity_number) + } + } else { + map.set(key, entity_number) + } + }, true) + } + } + }) + } + + this.history = [this.grid] + this.historyIndex = 0 + } + + undo() { + if (this.historyIndex === 0) return + this.grid = this.history[--this.historyIndex] + } + + redo() { + if (this.historyIndex === this.history.length - 1) return + this.grid = this.history[++this.historyIndex] + } + + operation(fn: (grid: Immutable.Map>) => Immutable.Map, pushToHistory = true) { + this.grid = fn(this.grid) + if (pushToHistory) { + if (this.historyIndex < this.history.length) { + this.history = this.history.slice(0, this.historyIndex + 1) + } + this.history.push(this.grid) + this.historyIndex++ + } + } + + getAllPositions() { + return [...this.grid.keys()].map(p => { + const pS = p.split(',') + return {x: Number(pS[0]), y: Number(pS[1])} + }) + } + + getCellAtPosition(position: any): number { + const POS = position instanceof Array ? {x: position[0], y: position[1]} : position + const cell = this.grid.get(`${Math.floor(POS.x)},${Math.floor(POS.y)}`) + if (cell) { + if (isNumber(cell)) return cell + else return cell.first() + } + } + + setTileData(entity_number: number) { + const entity = this.bp.entity(entity_number) + if (entity.entityData.flags.includes('placeable-off-grid')) return + this.operation(grid => grid.withMutations(map => { + PositionGrid.tileDataAction(map, entity.getArea(), (key, cell) => { + if (cell) { + if (isNumber(cell)) { + map.set(key, Immutable.List([ + cell, + entity_number + ])) + } else { + map.setIn([key, cell.size], entity_number) + } + } else { + map.set(key, entity_number) + } + }, true) + })) + } + + removeTileData(entity_number: number, pushToHistory?: boolean) { + this.operation(grid => grid.withMutations(map => { + PositionGrid.tileDataAction(map, this.bp.entity(entity_number).getArea(), (key, cell) => { + if (isNumber(cell)) { + if (cell === entity_number) map.delete(key) + } else { + const res = cell.findIndex(v => { + if (v === entity_number) return true + }) + if (res !== -1) { + if (map.get(key).count() === 1) { + map.delete(key) + } else { + map.deleteIn([key, res]) + if (map.get(key).count() === 1) map.set(key, map.get(key).first()) + } + } + } + }) + }), pushToHistory) + } + + checkNoOverlap(name: string, direction: number, pos: IPoint) { + const fd = factorioData.getEntity(name) + const size = util.switchSizeBasedOnDirection(fd.size, direction) + const area = new Area({ + x: pos.x, + y: pos.y, + width: size.x, + height: size.y + }, true) + + const allStrRailEnt: number[] = [] + let gateEnt: number + let strRailEnt: number + let curRailEnt: number + let otherEntities = false + + if (!this.foreachOverlap(area, cell => { + switch (this.bp.entity(cell).name) { + case 'gate': gateEnt = cell; break + case 'curved-rail': curRailEnt = cell; break + case 'straight-rail': allStrRailEnt.push(cell); strRailEnt = cell; break + default: otherEntities = true + } + })) return true + + let sameDirStrRails = false + for (const k of allStrRailEnt) { + if (this.bp.entity(k).direction === direction) { + sameDirStrRails = true + break + } + } + + if ( + (name === 'gate' && strRailEnt && allStrRailEnt.length === 1 && this.bp.entity(strRailEnt).direction !== direction && !gateEnt) || + (name === 'straight-rail' && gateEnt && !strRailEnt && this.bp.entity(gateEnt).direction !== direction && !otherEntities) || + (name === 'straight-rail' && strRailEnt && !sameDirStrRails && !gateEnt) || + (name === 'curved-rail' && strRailEnt && !gateEnt) || + (name === 'straight-rail' && curRailEnt) || + (name === 'curved-rail' && curRailEnt && this.bp.entity(curRailEnt).direction !== direction) + ) return true + + return false + } + + checkFastReplaceableGroup(name: string, direction: number, pos: IPoint) { + const fd = factorioData.getEntity(name) + const size = util.switchSizeBasedOnDirection(fd.size, direction) + const area = new Area({ + x: pos.x, + y: pos.y, + width: size.x, + height: size.y + }, true) + + if (this.sharesCell(area)) return false + const ent = this.getFirstFromArea(area, cell => { + const ent = this.bp.entity(cell) + if (ent.name !== name && + ent.entityData.fast_replaceable_group && + fd.fast_replaceable_group && + ent.entityData.fast_replaceable_group === + fd.fast_replaceable_group + ) return cell + }) + if (!ent || pos.x !== this.bp.entity(ent).position.x || + pos.y !== this.bp.entity(ent).position.y) return false + return ent + } + + checkSameEntityAndDifferentDirection(name: string, direction: number, pos: IPoint) { + if (name === 'straight-rail') return false + const fd = factorioData.getEntity(name) + const size = util.switchSizeBasedOnDirection(fd.size, direction) + const area = new Area({ + x: pos.x, + y: pos.y, + width: size.x, + height: size.y + }, true) + + if (this.sharesCell(area)) return false + const ent = this.getFirstFromArea(area, cell => { + if (this.bp.entity(cell).name === name) return cell + }) + + if (!ent) return false + const e = this.bp.entity(ent) + if (pos.x !== e.position.x || pos.y !== e.position.y || e.direction === direction) return false + return ent + } + + findEntityWithSameNameAndDirection(name: string, direction: number, pos: IPoint, searchDirection: number, maxDistance: number) { + const position = { + x: Math.floor(pos.x), + y: Math.floor(pos.y) + } + const horizontal = searchDirection % 4 !== 0 + const sign = searchDirection === 0 || searchDirection === 6 ? -1 : 1 + + for (let i = 1; i <= maxDistance; i++) { + const cell = this.grid.get( + `${position.x + (horizontal ? i * sign : 0)},${position.y + (!horizontal ? i * sign : 0)}` + ) + if (isNumber(cell)) { + const entity = this.bp.entity(cell) + if (entity.name === name) { + if (entity.direction === direction) return cell + if ((entity.direction + 4) % 8 === direction) return false + } + } + } + + return false + } + + sharesCell(area: Area) { + let output = false + PositionGrid.tileDataAction(this.grid, area, (_, cell) => { + if (Immutable.List.isList(cell)) { + output = true + return true + } + }) + return output + } + + getFirstFromArea(area: Area, fn: (cell: number) => number): false | number { + let output: boolean | number = false + PositionGrid.tileDataAction(this.grid, area, (_, cell) => { + if (isNumber(cell)) { + output = fn(cell) + if (output) return true + } else { + for (const v of cell.values()) { + output = fn(v) + if (output) return true + } + } + }) + return output + } + + foreachOverlap(area: Area, fn: (cell: number) => any, returnEmptyCells?: boolean) { + const output: boolean[] = [] + PositionGrid.tileDataAction(this.grid, area, (_, cell) => { + let out = false + if (Immutable.List.isList(cell)) { + for (const v of cell.values()) { + const o = fn(v) + if (o !== undefined) out = o + } + } else { + const o = fn(cell as number) + if (o !== undefined) out = o + } + output.push(out) + }, returnEmptyCells) + return output.length === 0 ? false : output + } + + getSurroundingEntities( + area: Area, + fn: (cell: number, relDir: number, x: number, y: number) => any, + direction?: number + ) { + const coordinates = [] + + for (let i = 0; i < area.width; i++) { + coordinates.push([0, area.x + i, area.y - 1]) + coordinates.push([4, area.x + i, area.y + area.height]) + } + for (let i = 0; i < area.height; i++) { + coordinates.push([2, area.x + area.width, area.y + i]) + coordinates.push([6, area.x - 1, area.y + i]) + } + + let output: any[] = [false, false, false, false] + for (const coordinate of coordinates) { + const cell = this.grid.get(`${coordinate[1]},${coordinate[2]}`) + const relDir = coordinate[0] / 2 + if (cell) { + if (isNumber(cell)) { + const o = fn(cell as number, coordinate[0], coordinate[1], coordinate[2]) + if (o !== undefined) output[relDir] = o + } else { + for (const v of cell.values()) { + const o = fn(v, coordinate[0], coordinate[1], coordinate[2]) + if (o !== undefined) output[relDir] = o + } + } + } + } + + if (direction) output = [...output, ...output].splice(direction / 2, 4) + return output + } +} diff --git a/src/factorio-data/tile.ts b/src/factorio-data/tile.ts new file mode 100644 index 00000000..58ffc32a --- /dev/null +++ b/src/factorio-data/tile.ts @@ -0,0 +1,30 @@ +import { Blueprint } from './blueprint' + +export class Tile { + + id: number + bp: any + name: any + position: any + + constructor(data: any, bp: Blueprint) { + this.id = -1 + this.bp = bp + this.name = data.name + if (!data.position || data.position.x === undefined || data.position.y === undefined) { + throw new Error(`Invalid position provided: ${data.position}`) + } + this.position = data.position + } + + remove() { + return this.bp.removeTile(this) + } + + getData() { + return { + name: this.name, + position: this.position + } + } +} diff --git a/src/globals.ts b/src/globals.ts new file mode 100644 index 00000000..404d3afa --- /dev/null +++ b/src/globals.ts @@ -0,0 +1,84 @@ +import { Blueprint } from './factorio-data/blueprint' +import { ToolbarContainer } from './containers/toolbar' +import { BlueprintContainer } from './containers/blueprint' +import { EditEntityContainer } from './containers/editEntity' +import { InventoryContainer } from './containers/inventory' + +// tslint:disable:prefer-const + +let app: PIXI.Application + +let toolbarContainer: ToolbarContainer +let editEntityContainer: EditEntityContainer +let inventoryContainer: InventoryContainer +let BPC: BlueprintContainer + +let gridCoordsOfCursor: IPoint = { x: 0, y: 0 } +let gridCoords16: IPoint = { x: 0, y: 0 } +let railMoveOffset: IPoint = { x: 0, y: 0 } + +let openedGUIWindow: InventoryContainer | EditEntityContainer | undefined + +const cellSize = 32 + +const positionBPContainer = { + x: 0, + y: 32 +} + +const bpArea = { + width: 400, + height: 400 +} + +const sizeBPContainer = { + width: bpArea.width * 32, + height: bpArea.height * 32 +} + +let bp: Blueprint + +const mouseStates = { + NONE: 0, + MOVING: 1, + PAINTING: 2, + PANNING: 3 +} + +const keyboard = { + w: false, + a: false, + s: false, + d: false, + shift: false +} + +let currentMouseState = mouseStates.NONE + +const copyData = { + recipe: '' +} + +let renderOnly = false + +export default { + renderOnly, + copyData, + openedGUIWindow, + inventoryContainer, + editEntityContainer, + BPC, + app, + keyboard, + toolbarContainer, + cellSize, + bpArea, + positionBPContainer, + sizeBPContainer, + gridCoordsOfCursor, + railMoveOffset, + gridCoords16, + bp, + mouseStates, + currentMouseState +} diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 00000000..f9c00a78 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,25 @@ +declare module '*.json' { + const content: any + export default content +} + +interface IPoint { + x: number + y: number +} + +interface IEntityData { + hr: boolean + dir: number + + bp: Blueprint + position: IPoint + hasConnections: boolean + + assemblerPipeDirection: string + dirType: string + operator: string + assemblerCraftsWithFluid: boolean + trainStopColor: { r: number; g: number; b: number; a: number} + chemicalPlantDontConnectOutput: boolean +} diff --git a/src/index.html b/src/index.html new file mode 100644 index 00000000..fb942f5d --- /dev/null +++ b/src/index.html @@ -0,0 +1,13 @@ + + + + + + + + BlueprintEditor + + + + + diff --git a/src/logo.png b/src/logo.png new file mode 100644 index 00000000..e3f55490 Binary files /dev/null and b/src/logo.png differ diff --git a/src/sample-blueprint.ts b/src/sample-blueprint.ts new file mode 100644 index 00000000..d5457f66 --- /dev/null +++ b/src/sample-blueprint.ts @@ -0,0 +1,2 @@ +// tslint:disable:max-line-length +export default '0eNrtfduO5Ehy5a8ICehlt6KWfndvjBoQoJFGEKDLaB60u+hNMCOZmaGOjAjFpXpKg/oA/YUepB/Tl4iMGz1IN7odMquzejGDxlRVJnlobubmbmZuZv6Hu4flodpsF6v93Xd/uFvM16vd3Xf/9w93u8Xzqlw2P9t/3lR33919Wmz3h/onH+5W5Wvzg9MTs9/dfflwt1g9Vr+/+058+QC8+evoTQm9+Y/Rmwp6M6ZWf/nhw1212i/2i+o06OM/Pt+vDq8P1bYezvXtzaJG/XC3We/qh9er5kM1wEzoj+bD3ef6bzJ8NF8aSjoQMguhchAqCyFyEDoLUeQgTMvJfVW+zvaH7cNilcKSVyhfQ324e1xsq/npAZkAthnaspQ5LoAq0gA+AyByACEDIHMAouhwt1o9J5nb8tYRSO2cXS+Ws231VONsPyfEpMIVy/Tk9OGu/vviqEkP5W4xnzVgm+16Xu12i9VzDbfYV6+7Bmu3qarH2ev68bCsZqrRxxRZWT1Q5mbapDCyiqBsFkMDGBSLDZvFqsPiK1Pn63otWi7+5VA9lSeeRxyt+fx4qH/6qf5qlrE2OyCRZYrLYhRZDA9gUIwNXMY2CNTctRGby8dP5WpeT096+lZPTxWT17LIjVGqHJ9kdk+ROoshAQyC11KxeS1oXmsGr1Mfz2qhlFkmmCxGdtLKVnnmL9XrYl4r5WZZ1qZQYoe8XRfIKbdcPL/sjzyYb8v5jxQHHGBaUNR7gHrZof5K7+6wfDps6xW+nC8ex65CMgAGBjEcVQAYxKxWItpH19vyuZrty9WPCSxHS7PWrtoKXp3+eWSFaP7veVtVq9hKrNlV72viyw9fkqRklTS74SnFNo0ohFbRyt2uen1Y1vNx9lrOX2ptr6XZQxyY5LGuV8v6p82kOdkps8Nqsc8vqjpJYk6PfVbodmiQMmHPFTxVrn6/2daLWD26x2r7vF3Xf84equU+pdCqVeiXqtzPqt/PX8rVc/2r/uc1OfNSwFnrND+PAh+C4LEu+MNrVct3ZlAKuNXYp2X95/5lu/6p2jbuxbZKrGTN/nnEtgShEsSLdsq8MHROI/NGjs7tfTJkISID9Olp97LeVrPN4XWTIKcdnT1ONv7CVhTEwqZzFqfKaqzO7X4qz4OcWui8JHJqobPelsntWVpkIbIGob71IlIYEsAgFMdkvauIHRSGBpwAaiwGMG4pOrJOkfBZOhyAQdGRdYqilZeiIwARJALDFoC1SWEgwTCCH1YCoSyKjnw4TGYxkHgYNZbsPA1ZiOw0zc5Sm52lLguRnaQ2CxH4ti4B4Qo+BMFOl19JsxD5MFUWQrEDpS2WIrBy8zQrGZebpdnp4SzbPqc44tgIFA25KRqyCFkTOLsx+dwMza+hPjdD80u5z81QkZ0TXvHdAUKkXvMhKCpyMzO/vfrc1IxcEQrC8amgBpJ10LKz02cPELJbWsjNTpmdWiE3O6XNsTNIPgRFRW52yuySFaLZmXSLmshZ5BTlYz/b6rHrIAUbffnoMWkqFBQM3+WjGGszQ4oMa9uL29RD2m/Xy/uH6qX8tFhvm3fmi+38sNjf1797vAI9Lba7/T37MFU3h6m7qoHgv7RZrH68O7qir5tyW+4bcu7+69/+8+7LFz7zdY/5imK+YzvLrYboRFhoKhOb4FjLjMV2vZrVtIzh4F8n2PfvJPvS7r12FL9yy5nKbnMht5yp7O4gioItNjt4jvnLnvtJ4WnTm/2UNEUh+NEaS8lC8jFIed4u67P9enaKqA5GbkiKNBtt6JjbJrENPyxE0mf5GCTHHJ9jA0d0MontgYCRpggMQMSIAhEFcCCvKBABxJ1IEORUlRyOAkBISjQQeiJBDABCDmfcAakaOjt6KPf700kzmEIikDNTckTjDk3VUIbMbr1cPM6eDtVy9rRdv85eqvLT5+YIeGSegRDIcSo10ny2QshjjDhPVdhBg6KsZhGlOQwnRbWrn2StflJx87VoxuRUNK/l2QSG/GSW2aOYPIQDD08tTycuZ6e7zXLR6PuQuss0ZZ4dNiJZHNgQFH+irATeCbooOgy6sqTNiemdlxO5FjpNkuAHoshhSeC4uh1QGkvxQ1KUpKJEhSw9npp/SXMuyi9gHjBHw2XAW37ohhSG48duSAwPDpPeq5PwgR/YoUjU2RBVXqOjdAEitNNuRPrLL9dpnxbzEFry8xRIcalsyIlUxK/ndperz/uXU1Jd843dvjHdvrPF8X8dBv8Zwt4mfPehG+Gj2Jvb/aOcW3ImGz4GKSLLj9WQGPz4mBk08L9tiSdtz+C6KkVmvYhswknEHpLXgR9IoeZNNuVE5Y2abM6JzrvL2ZyTKPBCYowKCmnWjpXNRWEEJwwQCiLHaPkpQiSGA6onJAXigUgLCZL1TKMlhwLJp6MomQcRQOEDCSKBwBEJgsR8SBAN1BaQIPncKQZP8slTrY0lKBAke4oE8QAIOZwA5GBRlDgkgYoEQTKoqOE4IK2cJETxMUg68jHKPB2Gj0HSYdlRFBLC8f1XEsPz8whIdgR+IgGFkU1SiYpiSIxsHkBetNk0lcgtJjGATABKLtlEFZlfQbKZKpG6UPWd3vITy0gMx89vIzGyS6rMYwS+2lIYUbrKdj3/sdrPdovlenCvESoOpp3fqk3/JrhRHvbr+2V5WM1f7r7bbw/V2NhalAOTi0O1Uhc+jcWPsbUco7BaXZgftp+qx9m2PJ4vEOURomMimySoZoKGNGjS7o6SXY6jzqWlCur8M0p5GQKyeSDHAmrFSZ3qRqkRPCCSosAC0jkgWRQsIJUbmiwECERSJFlAMg+kWEAiD6RZQEUeiDWzGTjtxG70bVavCovV7BwPGShQEtz0lm31eL8+7DcHIMoy/1yumgjLetssUfDrP73U623z/jHOAr9ev/W5ebvpRQK//LAs5z8ioT6pQifuI5tQ6od0kEiSeX0yStF4PqzIWPusCceet7AkjOfBqBDthJlDThllZyzL3cBJwKw5whigLsrQyAEpgL4oZ6PewxfLZbX9TEO3GZJCUYX1EgI0N4AMehWwmxcUtE1Ca3DL1BQL0L2X5CW695JA6N5LDq3VkdVhvqzK7WxblfMm7Du0TQkKLoC7C0WXLMDdhQQSIBDFcimxbYrEURgOOTDW7BZ5egxbARWk2VEWxW5f78hN/4a0IXyp3BY6b13LKLOCCytvYUUS1oOeAOMUW0aJEjxPoAOqkh1GCi4DrjtQhwEuCStgWM2hlme4+uzSohS4CEsKCN0WSIpAw5XEsRgOOTCHrQgkPZ6tYeecEVFwJlhA7HNxK8hbBeabpEW3nERaSZmduoDHLRkaEOVWHMfN8EgkevK/XO+qq2V/CtRcfldv5206xVO53EW/m3J+bG4PjuVbHBw34qKEI9nLk0wLJ7mbRNkYjEnZnp/1RaSmTEpXkOPW8LgLxnYXpUnwXKyCsd1FeRM8h6vIB75klEjBdbhYtHrY/WJRG8a5X4Hl0URJCpAvFjhH+9II3BVj0g0aAVTTT4PaAAUFBNoAJEEGc+hIHIt5KSSOg0wJEsZjFgnJ5oD6FoHlWkSZDoN2tTijOg6mYGKaJGZylY3yIAa3/vao/MjKhLHD3Po7+/vN3t+YBVOCeYrsySatYltOxBqdtJwse++T7TaVBDJsoLNl5xkGrbUoKm/UbgRsEohtxyudpi9pMlmmU6uuipJs1FjwVKPNe+qrhnon1dCqqxqadCocc1lpnLfEspKceE5iuxfV6NKB2ynV89RpbBck6QF3U5Iei0VHSXrAKCtJj8fOJUmcgJ0mUji+wA4TSRyBRXtJHInhkI1bFWZFkfRoyPwhYbD4EDmqdjY3q3jtne7XiTRym9y4LHWUWa9+TVHl/RHyEjM4/uO+wd9UQA3G7zAv/2xIfKh3pfJE5d3LItnN1/O3wiI5/KSl5z1qVrBQA46abPnLjkJJzacusKO78jyRLGMjChJF9QwDKCjcWkviaJbiaI1ozvgqp3mjVdtLnVMbOTNE4Ky1VapV+bCs7h8Xu+bPi7LuqtXj/X590eCzffMzqfDJ4IlV+M+X5epP/upwLMCcr5fndaZZ34IOhQhWFN4L32R7PDc/tc5rJVQQTtiiyUp5aH6qrLe1PWHqRwvfZHSUzU918IUKUpj6D6FtWtrtantto/x02K7K+XBi/6nsIZfWJtPfbJfm5fp5sdvX35y/VLv9rLl94FPV9Gv/tHhMRlDaNHpDVnanjM/gTpx/KLdEHCdKzOpQtSl3uxxZxUiyejHN4CmbOEr46hB4roYfDJXB7OrSFSIGymMLhX851B+/f1os99X2dGPN5eIdqk5/vj40utuEbVMDDNQAHw5PT0m+twmz4Ph81xc51Voxh3W9XeC81rRDc0UDfLkMqK2CLetRLFa7anuqPj8/7eOnY7+4nP+YeFwW8fPxflxVyxOr2oftzcNR3gzZSPz6qi7SElJRhl9HQme2pYXkekIiN4h67aju10/363rRL68xIr5ce+GXQkTzVshIwI0dd5pYu4svmxhxdAy1flhv1ttkzPi8GY4YXcEfnTpJ9OYnlAetotTHIcKL0YTXjCk/1fbFcZO9zAY4Xe7vmx17v96Xy/EYl2zBlpyjmbA9HFlKwt3aGRetqC2B1a7h1qW5/pm6EZCkinxBZE5e6VDEh3CP5XawmEhT11zoESnmjGMRxctPbb1uSxFoR+Stswh0mPtMEsj2i9IuQvKahYLtFnk+qIB9JJ33ZpQQqAdn05elSJQ6m/eKlIC9IoI6dlBdS0Ai7Ai71gBqbEmsV9WAQX8hNn0ZinAdE2PAMwiDQK2O/LSut5LV1Vih7Xu4c1PIWPgqSrM89s6gaGiNZpiGnlkpixvzI3k1T0EYcrQdNYk3IqkoUkB5RjJPSso+s7LDIN3ks1O57t722Nl7v1DklUfwMSLcSIKbQHT7qzfOH5rawFMN3Bql0LWdkTOppEbjk5qx6kmD0spIxFT8dFw5uJTy828J6tJj9hN39DRqQOOTHFR+Au5lJ05zkp9x2+IwqOMnygFzkpl921bbUlevaSjLQjDMX2VAJWQkqyplUc1mpIIq5fBVKInjQRmzhhzQ6ZgmThdQfoDIpxwobgpt1CQlG58Bt7wxxX/nCrrR1X+X8r1xxX/X2sG37hb1Pt256RwLpSWUxOtuJ0nPSmLZf64bwdKmIO0/1WuCJntt57Sgx6c6btBP5XI5VNRfUNdWaiaQzwEZJpDJAVkmkM0BOSaQygF5JpDMAQUm0NVRpJBMASKRQGyLY+bP+0YSRvLoybHaMOe1zjJIY0AkDnNa50RvmLO6yOHwJnUWhjels6PiTejcJLQFFmYsGOapFViUkYUpoSRjwbD/gDzZJJ1pUDRLNq3UcI4sx0GGU2RZA3YwaBLGQ5mZIl/noGwAY6uceegKMLTKAo0UZr0st7NNuaqSa/jFpiDqh5WToE1BuYZOgUCCAtKguURSZEDjhKQItXJIihxod5FAHjSXyKFxrRydocgXIEUkkACtJWpoXoKWIEmRAikigdqZ/Vzuh+6ekLw70E0O79p2nwloQQMzHUKI8j4JuhxGls/heQwv5PAMhBflfBJ4FsMTmD1MaUAADX1q3gbQ0CdxNGafk+PiLuw5eixGD4mD2fnksDwEQ1ITMO+FwNFFAbkdJIyA3A4SRkLUCApGAdn4ktlXrIk2njN23yIf/zeT8/H/5vO8/q+XySuCLZq0XW28NfKSyetPpf9CBFmE5sjlmMlrTim7XninjieY3ExeXWiwmlDnSzF1YcCjIEbGiC4sCMo4JNCFmwYqk6Ae9u6SMGGak5ikjZ/Ncz7NYIEKsPiRI+8os4dRUSDf/NLMoYICKip/+073sqRuWP5Xv7i6g6fH3VNvobKuMN5Lo4P0prHWTiUHp6UnSKmMaeIdp5KD5mfW2yDcMdePvU7FGVmv9WYyW5ap+z3aOx9V/lBqwhFN9anajj+k+d+9qXAsQTnsmhzUmrU7tEpWC02cZ+g4BY3FOP1VGffr20wUl+xkA96krIXqne8Ykh/t3lTO54fXw7JMN+DT4rpUpZiBnhD+BhtR/8TKkiOyHQlfS3I26+Xg9RYaycJqeNqlyZGncMffEfS2e+5r9bg4vOYJFuMItj2C/QDByaeJIUQ7/OHhsj6mCk3iOcQj2vXICINcTjxNEN3aEw+L5yzTpcZpH2IvyUxZgLFIIjqqpQADdpoCkmAIkQRSIBA5NA1G/kiKDAhEUmSz4SyRo8WxIUgqmKHVkCMlcINgmhMU0qrgBsGYeOhhcjILTivmxM7N6yhDjRhebh4qzUWgRK/AuBJJicVwSHocFskh6cECSyRMgGCoUWksrkTCYHnihlIOxy+Bkt00IO2opB/Nb3gofMqBNUlQ9ADaMkIrWkOtcxkdbrQ2YDowIwNaR7lGnG68jKZhWqNH0ek1UHuwyaPl8DCAoBweGrRtU09dzPs0bWoiB13dI90XI0AbiSip0wa12gwFxFbc2bntNaO+ShvNtnZIwgwbgmQS/9BQSP7YHPeslKTLcxFI5gT+yAr2yPgJVDPPBxUwaBJGck8yKZ5ZxUWg5MZPiJpZPn8M1zgkybJcBJI17N1mxl8D+F0CZ3zls5ilR7HMFRAMxTcnwCsDGN0fteMW5blokAnD8WffCXUvGd0oMhDisAvSQhpEgx3QLfNGpnfvf45G2f82FWVHDkCGRGUg8zYwLHtnR3VHt2mbjzU5TQFMTgdeWWEZLpLzIKjnMDJqC77bVa8Py+YE7rWcvyxWTX+pVD37mZmnjsjXCxpPIdL1qmnGcW3ZM+pSRh1l3CWIkqmgtyeIWj03rxxPFCNqdpuqnoWZJlo6ytdLkCGGDgs6ZMSHJ8kvtUv2Q1XOk+Hxa/+rcNsXjDkWFXWVf0htoTYNj7Qd01Ea4Lz+3XbxdEj3zCLm0GFbrpozjvYw+G40KWghENHlUns0RZYEciCQo4A827MhaQlsCIqKUGDRZJc9Kl1vqtX9kZzkTlmtds3zeKF/ugtRrzfXpFtDUjtGr5LO0CetUWJkJqbuWDHwILkxdSaeAr0wnx6mxmLq0KRJWqI3s4bXVKrTGw4Sec9IkGQsJ7AdN0qLA9txI5UYjMOTlGBxeBIG886IUZmCf1+STFlKKgkqwOIN6vIJU6CFKTQSWpkSKCC0MoUEMpGdUa+sr7WplN51pVGhsPI6Qu+lF5JARfdgmmNonQo5UA+SRAIFHsdUj2POKa1cGvXmEtcBVP2x8LJQokUN2ihKDkKApTDUoIUET9ZJILSChZwZQoNFNSRJBiQpvNUmd/zd19mtjLDcmDPrphwjHLvChwnouRYUEy9wLSgenkSD4+nLU4wU3BIfJl3swDgTT7FWHvnR1o/qYynjeQOwTnhiOZNgHT2p5dyUntwCJi1GUHgj72dEnPCd3B/TT4EMVOKtkY63XX3UuinduEwa8VEo2mrg5juJnKwDVkxF4SjenlxPXSFcO8h6o/fHfT8NKrAKLUoxmNlORW6MCnMoSBwNpdKQMAYq0SJhLFaiRTLZQeTQOB4Jf0tNLeCWbys4m8oQohJYHanpKqDOD1HwZnSBOmQkkuA6LU4U4bpl1Rb5gGJGaVIZC9zb0yJ2QpUfnZbkRqh5u2vtdRRF7C3Ij9oeSU+jai4DiuCsuaKKj14ZGhXuUkAKyHJ5KZWPeFnTN0Aec8+RH72wOmbl4KA9150L0rgbsQ+4c5rtJGpRiFhAQQZLTSa4fRN1w7dh5yXJnKjZiUkii8R1DYsskkZNd5nGYSqEyRLE04d6NljtWxu7trkFbWMzezq1NjY5GTxmY9PDDCBFFJBlRkM+Kqkj81J9VAM+iRVMR0edPZsr1+r1jARl7hof6/3lqNgX0EFKuS6ZutnfxEcnj4t9GlQzrVkRwg1P5cD2Zg0TVAcbUSo/FkM8tZiJTM4ih1mBJI7HrEASh70p2LOhchGB1QNBPscOHZobY6CGPW09aVTmDnE11ohcfeMkczLfuoo1dY7eCaNsosdq3txANas934fFiqp3PLdWM2mLuufkn0Fbf/1obLf+dr+o8z+OpcObz/fHC4NOV+ksVpvD/pxVlR6GHjcM+9WG8Z+jhhGVnW4X+5fX6njFy+BIBCaQFrczmFMQ5WZI51yqm59Ft/Tc/b87Yhh29DDsOwzjT6lhOHgY56sq3mUY//R3v6UGEvXVO7+dGcbVEKNv1YovMcuH3pbr4zV383K1WtcO+0tVr4FfrpeCmVPM7XK1WTOG7FF1e5vFl/hesiuKZ6Bc0m4IsmQE11RW1//Y3a9Xw+cN6SRB1708zPiCihREqWmouLjzblB4VKrkXxKcFgxOtztWixFioZskyODVXu2NchEtx9vlEMH4nmCoKytMlJ7HFIy+1aN8/uxkwfiIGeGNeCqmTX1P8lOM5qdlXqcyip//EHHCRYxwED9/S011TCw2ghE3YnHoVO+vQbI9UTn2QO88YKUjZScxi+tc0TbRcJzQI5821r6/+wA36jgLd8C+458XNcmjt1Jo5CrJx9Xt4/QlR0NLmULFd9E8x9K7NxHfbf+cVoCiSJ7SDcnxaXmoOdJuR8dQ1nqxHBDjaaVD5CgROdomI6cjR0JWoHNzTZhumpVMl06HdS9V+enzhXVUtUXnnd1h+XRouoiU9XcTHa7Ycrv5+NuoX08OckCfDKapkith3O87Vy+/ld/H1snPtYm8/imSfVct+04JvrraoyPDVzyHicXyF1DNlaAdIUFsSX0rCVbl/GVMpZQ+3psTyXY2QrKnj0PCNdiq6rkSw737a6kIubCy/Xlz1JRRxWp89RpehaE10mMaZrhC8OQ15v1OU6gv9d63LF3uju738Dsm2t9faD7uW9jiCJj9tjhf0Lmuraltve3fn76+W/xrla6NM1GRzMl/GpSLpIMPKfCofIYBLmKhJ+EEAleQtEr4knLVyVR7KU+74b4mcdfNZdtV+xu+nxt3TpkH/wesUw3nRp2xS3xxJXtZcrvNcrE/FoF8uD6lyEKR9hmTvfT8h6QUZQc7L8s2T4Yb9Bq+cP4NJHUb8jouaC0fMVmRK2ZQOKdcVok0DmppVUp+wrBXeqHBFcXyoVWWFY4PJkEWeEqBhnIzmDwIfOyQ4YG9KSPKgHmIBzYqJoIO6txXO6j79xEHdbaQ44bhv9Iw/mzUINToYzr3DudbsztiGHr0MPw7DON/UsMwo08b30Ma1GGjLezocbyHOP78b/+CGogDw26Ubsi3D8JtqgauOrzOnstdKjiaWB/GeYlvGB5VmA/JDL3YqCCR7cg7TFTj3Pr2xwoNjHXD1YeHWiINFBY6sRjHHZfjYYTX7pgndl+hf7wm+sf/R3y1wlQP7/jL42MN0lu5FG8UBDC+e8xtFZV/YMU4D70v4CS4mOC/MD8hR/gDTGg1wsxmQrdmzADolRWe4xbYqCR3ANTGlCZhLAfGkLQlXYGoEPbaZf51sWpaDT1uF6kcSX/7gaHVo3tRSqp6eFvt1oftvNr1Cw9Pv7hRZyjmJnrqps83OpHti1Sa8x5lUuuV+p8xTtpZcVVB1VHm7rIZL6ECk5DrSUh2JES0XSIE1e6Jm8Pr5p/rxSF13S+tvt/IfE5F/2W3XN6ektdGtqiyUUX4AK8Abf//dOamZCFCTxaknSZHBlvCV4pSfD8mSiHHhVqaUP9XGcSvRg1ifKglvINT/L8Il1iODrWwxfGWw/gf1DDGh1reQxrff0+NY3So5V3E8atfUeNoLcHN+qdawXc/Lfbzl2Sm85n8L9/mke/f9c57mwAzctIu/Yh0Pht1fKh34udt+frabE2z2sgsf6wGE/rOU+FrcfOvOtur1Klr3Nr9sflFPd+OB5SXLNn7T+XyUN0vdveb47y4WD+1L1Ivua81M07F9/W31/vq+HcP8bxnC8rzmfktNZtl+fmhcdo/rZeHZpDFx9ptE05J6ZW2xwb312eel+uHcrn8fDEAyiZv6n6zXn7evKxXn689ostl7U91h/1SP3r8xTVY0Pxkvbp/LTeXHy3q4Z3lcCSaJ4rT516r3a58rs6XNT7u7tKzKsCzqvgFz6ozW+lJVaCKzJpC0ohgvSlUUK5ogpmJKXSe8G84hy4qhE4iT0+ix135mJ5IUQMYfsAwgC7Szx0wHBESRPN2uiE76tY+GzXDeThsV8yMnYQVkASXCLiI5ZeEUwhcQdKaDCpF7XOW69XzrBFB9cjKI+l/IRmnizrrcL9g4y8kMS2MqUC+OPQLAZwkHoo0Bh6vRxw0NBPwa4cLULPw7xNmIWstgRYMOqIfdQwCNPjMyZyQoiZCYBy3WYjeNwr25jHD6ump4oYMo0ZJaGy3z7mveJr2m7e5vboz5bEgWk/SU2XZu3LFknfP2qj3FJHVmHK0L6LSPC3S8UX2w9jyiq1Yi3/Uj6rX/XAI/UT5WdCno+q7JL6F8D1N/fVrp4ha8mMOYJSNP5VE82PQNIUWIEYoBiMG2B51scrTLslvJadj1NeKMxJJT3aGSE3nwDY/mgJTgKgj1vEDnCEVqBZEzbK4HxFhkioYA/LtepJO6oOxoyEppTAO54ueqBkeHYUC1SPgY1KTdCTq5MXeg66t4phqYkW+W+7QV7iaEvX6Qr5TTFIWO2IT9zl1iXqB4aCUwlgzhj1mmspEvcLYI9GY0kRtxIBx6Wlq40eoDWa5Rd3IgGEV5EcsR1wOXw4KTFpOjP8Cj3FOwl+gF7RkUMKpEaIRDMnQE87hK4IEB2XGf0HzvoCvBQocw5ilQKH7TNT36hz2yLjXZ/xvPLms18fFGfJgMOolxWOBb1nwx8yxNPt9j/2SYr8vkKyw5Bb3TcTDkEykbDQsnRQWNYNiJIX1WSX/GAADhOd7KX2yyCSoEmKTI+zG60qOlvIzeNaJovfvDTn+YjTfFKnqagojLJzR/PMPvdcdzBuSGSP8ouv9uv1Zob911tCMMFMYYSeej7yHenTniCZZM8bjLMg5krQzvZsSuTe/MPY7+gjD+ymMsESkwocRqB4TYRgR+FI3G0wSVUxBtV/1iPkvhtsVdlKb8EnXu0i4N+cwfySQ5m8YYRwoevV7AxPvtkXHZrGpZvv17OR23rLdvokfArMe80VC9xTTkRcZ2jDmFFPQwkh+I2okcul8QpbfnheAU+XjZltLs8ZqbnZqmjMmHfqoicgQ/DVkaHvz51xwG31tWT0RH7PA8ZoC+eTGHN0xsT3RgiaV+xQL4lSJmT7xI/iGSS/wCTO0CK9kUicvfBm7okAPijQkDBf1O0FPopgfkHTvpkRS1+Cu6AqFgFlKRknoER6BAVlhJhxhMD9hJxwnWE5U3BVuwicM7xMjjEHa8E4zKkz4BGFuOjHh0INHtphw6MGbQQLRV4FomFDjzwWoBUFMOM3gTXdhAH4ogh82iWynBGT8txyDSBqDrpee6AwVrXLCTYlL+G/ZMSaYY3vM0SRzJjnL7hcQyuvNFClIZoQpzPDEwiKLKZEDx4kcODnGx3f0N7794E93hlO+oJNyCmtIoY7xMC0o1BF25PXaEO43zJTgkPsKdUv8q8zRY6rf9o6pvp8W4njzlVvSs9hOCS99jYZUufASJZ1O59hOS6QvbxuEensJdS+8p0OCTropMvMsm1L6Mbn0zLUhANjghhWVSQ5Gz67c6K0zvWgMGfmIKgaHvjVgDffDLGTox6nxGd5M1ik0zgLKXWkgqkYL6Bq86qwNNDshoRo+kZaWbBth6/Vmg4Rup6QsM8UyJlqCzi0Phdgo4SehAwLtkEVQFxPiSMxPiAmfcLxPyAlxJKKdnRtTz1XkjF+tx4eOSEKR4IjI0GfHZ9vy9ES78cEi5hf8+C+wmhI6HaYkpro4MZXMEXamGJ9fS4nXiHG5rv6XVIALpF46I8dlvvo/1tVOEFGTivyhl65MiWhSylz4lnMHpwchzaQUuvBtBSGJudLNFnPCkewwUwKGgbX4GzslKha++bjvQJTXuCmhu8DavaOqTKgMPTB31TDC61dESxYX1VsiNe2qGFPO5aLKyzzthmR70oSOqi352KrgYatRBe9DXKIFHBVbQjXpgS4cHBKJGZGio1jNcpy1E+rRmepg3diQC60TfnyF+1jFCGhcx2La4YqxH2CqiBPjy9/H6YmTE4rTxymLU2PTnJgakyirhErTmUozoray/QipN4l6SqTefaTquBFbugOVx4//BFd9wpRi+HEK5ItJherjVMiL8dlrTCUaU6slsBkxpgpKkKNIWumJ2iI6KFa0xCexzJTa/QTBnNllRwcKyRUmUedC80RmeOInFM0PsWRo8ofRgb0TT36ov7JYVqdbTbuxM33qOVjPpus98uW/ltvHWe03zbfVvppdT1SIV9X4V/X4V834V2376uWdocfdl+hem/Wqmm3K/cvQCx59IYAvHFt8Qy8IaMhSYo8r7HGNPW6wxzHpSoc97rHHA/S4KpiPm/FKa8YrrRmvtGa80hpMaQ2qtAZVWoMqrUGV1mBKazClNZjSGkxpDaa0BlNagymtwZTWYEprMKW145XWjldaO15p7XiltZjSWlRpLaq0FlVaiyqtxZTWYkprMaW1mNJaTGktprQWU1qLKa3FlNZiSuvGK60br7RuvNK68UrrMKV1qNI6VGkdqrQOVVqHKa3DlNZhSuswpXWY0jpMaR2mtA5TWocprcOU1meVtk3MI95VE97VE941E961GHv4iutRxfWo4npUcT2muB5TXI8prscU12OK6zHF9ZjiekxxPaa4HlPcMEFxwwTFDRMUN0xQ3IApbkAVN6CKG1DFDajiBkxxA6a4AVPcgCluwBQ3YIobMMUNmOIGTHEDpLi6GK+4l3fVhHf1hHfNhHctxh624l5e8OgLAXyBr7iXFwQ0ZK7iXh5X2OMae9xgj2PS5Sru5XGPPR6gx9mKKyYorpiguGKC4ooJiiswxRWo4gpUcQWquAJVXIEprsAUV2CKKzDFFZjiCkxxBaa4AlNcgSmuGFDcH06tZ5t0/eWh2mwXq+bQd1k+VMv6Z7/79T/+rv7np2q7O+U3eCeLILypv/3lvwGe/rBG' diff --git a/src/spritesheets/entitySpritesheet.json b/src/spritesheets/entitySpritesheet.json new file mode 100644 index 00000000..68709540 --- /dev/null +++ b/src/spritesheets/entitySpritesheet.json @@ -0,0 +1,1730 @@ +{ + "frames": { + "entity:rail-chain-signal/hr-rail-chain-signal-metal": { + "frame": { "x": 1, "y": 1, "w": 3840, "h": 384 }, + "sourceSize": { "w": 3840, "h": 384 } + }, + "entity:rail-chain-signal/hr-rail-chain-signal": { + "frame": { "x": 1, "y": 387, "w": 400, "h": 2560 }, + "sourceSize": { "w": 400, "h": 2560 } + }, + "entity:oil-refinery/hr-oil-refinery": { + "frame": { "x": 403, "y": 387, "w": 1544, "h": 430 }, + "sourceSize": { "w": 1544, "h": 430 } + }, + "entity:train-stop/hr-train-stop-ground": { + "frame": { "x": 1949, "y": 387, "w": 1544, "h": 377 }, + "sourceSize": { "w": 1544, "h": 377 } + }, + "entity:rail-endings/hr-rail-endings-metals": { + "frame": { "x": 403, "y": 819, "w": 2048, "h": 256 }, + "sourceSize": { "w": 2048, "h": 256 } + }, + "entity:rail-endings/hr-rail-endings-background": { + "frame": { "x": 403, "y": 1077, "w": 2048, "h": 256 }, + "sourceSize": { "w": 2048, "h": 256 } + }, + "entity:train-stop/hr-train-stop-top": { + "frame": { "x": 403, "y": 1335, "w": 1244, "h": 305 }, + "sourceSize": { "w": 1244, "h": 305 } + }, + "entity:rail-signal/hr-rail-signal-metal": { + "frame": { "x": 1649, "y": 1335, "w": 1920, "h": 192 }, + "sourceSize": { "w": 1920, "h": 192 } + }, + "entity:train-stop/hr-train-stop-top-mask": { + "frame": { "x": 403, "y": 1642, "w": 1224, "h": 295 }, + "sourceSize": { "w": 1224, "h": 295 } + }, + "entity:rail-signal/hr-rail-signal": { + "frame": { "x": 3843, "y": 1, "w": 192, "h": 1536 }, + "sourceSize": { "w": 192, "h": 1536 } + }, + "entity:pumpjack/hr-pumpjack-base": { + "frame": { "x": 1629, "y": 1642, "w": 1044, "h": 273 }, + "sourceSize": { "w": 1044, "h": 273 } + }, + "entity:chemical-plant/hr-chemical-plant": { + "frame": { "x": 2675, "y": 1642, "w": 976, "h": 268 }, + "sourceSize": { "w": 976, "h": 268 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-bottom-stone-path": { + "frame": { "x": 403, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-top-backplates": { + "frame": { "x": 789, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-top-ties": { + "frame": { "x": 1175, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-top-stone-path": { + "frame": { "x": 1561, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-top-stone-path-background": { + "frame": { "x": 1947, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-top-metals": { + "frame": { "x": 2333, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-top-backplates": { + "frame": { "x": 2719, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-top-ties": { + "frame": { "x": 3105, "y": 1939, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-top-stone-path": { + "frame": { "x": 1, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-top-stone-path-background": { + "frame": { "x": 387, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-bottom-metals": { + "frame": { "x": 773, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-bottom-backplates": { + "frame": { "x": 1159, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-bottom-ties": { + "frame": { "x": 1545, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-bottom-stone-path": { + "frame": { "x": 1931, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-right-bottom-stone-path-background": { + "frame": { "x": 2317, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-bottom-metals": { + "frame": { "x": 2703, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-bottom-backplates": { + "frame": { "x": 3089, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-top-ties": { + "frame": { "x": 403, "y": 2517, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-top-backplates": { + "frame": { "x": 981, "y": 2517, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-bottom-ties": { + "frame": { "x": 3475, "y": 2949, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-ties": { + "frame": { "x": 1559, "y": 2517, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-bottom-stone-path-background": { + "frame": { "x": 4037, "y": 1, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-top-metals": { + "frame": { "x": 2137, "y": 2517, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-top-backplates": { + "frame": { "x": 2715, "y": 2517, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-top-ties": { + "frame": { "x": 1, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-top-stone-path": { + "frame": { "x": 579, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-top-stone-path-background": { + "frame": { "x": 1157, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-stone-path": { + "frame": { "x": 1735, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-stone-path-background": { + "frame": { "x": 2313, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-top-metals": { + "frame": { "x": 2891, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-metals": { + "frame": { "x": 3469, "y": 3527, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-top-stone-path-background": { + "frame": { "x": 1, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-backplates": { + "frame": { "x": 579, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-ties": { + "frame": { "x": 1157, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-stone-path": { + "frame": { "x": 1735, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-bottom-stone-path-background": { + "frame": { "x": 2313, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-metals": { + "frame": { "x": 2891, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-left-bottom-backplates": { + "frame": { "x": 3469, "y": 3913, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:curved-rail/hr-curved-rail-vertical-left-top-metals": { + "frame": { "x": 4037, "y": 579, "w": 384, "h": 576 }, + "sourceSize": { "w": 384, "h": 576 } + }, + "entity:curved-rail/hr-curved-rail-horizontal-right-top-stone-path": { + "frame": { "x": 4423, "y": 1, "w": 576, "h": 384 }, + "sourceSize": { "w": 576, "h": 384 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-9": { + "frame": { "x": 4423, "y": 387, "w": 530, "h": 384 }, + "sourceSize": { "w": 530, "h": 384 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-13": { + "frame": { "x": 4423, "y": 773, "w": 530, "h": 384 }, + "sourceSize": { "w": 530, "h": 384 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-5": { + "frame": { "x": 4423, "y": 1159, "w": 530, "h": 384 }, + "sourceSize": { "w": 530, "h": 384 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-barrel-1": { + "frame": { "x": 4423, "y": 1545, "w": 530, "h": 384 }, + "sourceSize": { "w": 530, "h": 384 } + }, + "entity:connector/hr-ccm-belt-04a-sequence": { + "frame": { "x": 4423, "y": 1931, "w": 320, "h": 630 }, + "sourceSize": { "w": 320, "h": 630 } + }, + "entity:train-stop/hr-train-stop-bottom": { + "frame": { "x": 4423, "y": 2563, "w": 560, "h": 291 }, + "sourceSize": { "w": 560, "h": 291 } + }, + "entity:express-transport-belt/hr-express-transport-belt": { + "frame": { "x": 4037, "y": 1157, "w": 80, "h": 1920 }, + "sourceSize": { "w": 80, "h": 1920 } + }, + "entity:fast-transport-belt/hr-fast-transport-belt": { + "frame": { "x": 4119, "y": 1157, "w": 80, "h": 1920 }, + "sourceSize": { "w": 80, "h": 1920 } + }, + "entity:06-silo-base/06-silo-base-day": { + "frame": { "x": 4423, "y": 2856, "w": 352, "h": 384 }, + "sourceSize": { "w": 352, "h": 384 } + }, + "entity:06-silo-base/06-silo-base-night": { + "frame": { "x": 4423, "y": 3242, "w": 352, "h": 384 }, + "sourceSize": { "w": 352, "h": 384 } + }, + "entity:circuit-connector/hr-ccm-universal-04e-blue-LED-on-sequence": { + "frame": { "x": 4423, "y": 3628, "w": 480, "h": 240 }, + "sourceSize": { "w": 480, "h": 240 } + }, + "entity:circuit-connector/hr-ccm-universal-04c-wire-sequence": { + "frame": { "x": 4423, "y": 3870, "w": 496, "h": 232 }, + "sourceSize": { "w": 496, "h": 232 } + }, + "entity:big-electric-pole/big-electric-pole": { + "frame": { "x": 2453, "y": 819, "w": 672, "h": 165 }, + "sourceSize": { "w": 672, "h": 165 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-top-backplates": { + "frame": { "x": 4423, "y": 4104, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-top-ties": { + "frame": { "x": 2453, "y": 1077, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-backplates": { + "frame": { "x": 3031, "y": 1077, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-top-stone-path": { + "frame": { "x": 1, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-stone-path": { + "frame": { "x": 579, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-ties": { + "frame": { "x": 1157, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-stone-path-background": { + "frame": { "x": 1735, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-top-stone-path-background": { + "frame": { "x": 2313, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-top-metals": { + "frame": { "x": 2891, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-top-backplates": { + "frame": { "x": 3469, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-top-ties": { + "frame": { "x": 4047, "y": 4299, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-top-stone-path": { + "frame": { "x": 1, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-top-stone-path-background": { + "frame": { "x": 579, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-metals": { + "frame": { "x": 1157, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-backplates": { + "frame": { "x": 1735, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-ties": { + "frame": { "x": 2313, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-stone-path": { + "frame": { "x": 2891, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-right-bottom-stone-path-background": { + "frame": { "x": 3469, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-bottom-metals": { + "frame": { "x": 4047, "y": 4493, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:straight-rail/hr-straight-rail-diagonal-left-top-metals": { + "frame": { "x": 1, "y": 4687, "w": 576, "h": 192 }, + "sourceSize": { "w": 576, "h": 192 } + }, + "entity:nuclear-reactor/hr-reactor": { + "frame": { "x": 4037, "y": 3079, "w": 320, "h": 320 }, + "sourceSize": { "w": 320, "h": 320 } + }, + "entity:nuclear-reactor/hr-reactor-pipes": { + "frame": { "x": 3495, "y": 387, "w": 320, "h": 320 }, + "sourceSize": { "w": 320, "h": 320 } + }, + "entity:nuclear-reactor/hr-reactor-connect-patches": { + "frame": { "x": 579, "y": 4687, "w": 768, "h": 128 }, + "sourceSize": { "w": 768, "h": 128 } + }, + "entity:straight-rail/hr-straight-rail-vertical-metals": { + "frame": { "x": 1349, "y": 4687, "w": 768, "h": 128 }, + "sourceSize": { "w": 768, "h": 128 } + }, + "entity:straight-rail/hr-straight-rail-vertical-backplates": { + "frame": { "x": 2119, "y": 4687, "w": 768, "h": 128 }, + "sourceSize": { "w": 768, "h": 128 } + }, + "entity:straight-rail/hr-straight-rail-vertical-ties": { + "frame": { "x": 2889, "y": 4687, "w": 768, "h": 128 }, + "sourceSize": { "w": 768, "h": 128 } + }, + "entity:straight-rail/hr-straight-rail-vertical-stone-path-background": { + "frame": { "x": 3659, "y": 4687, "w": 768, "h": 128 }, + "sourceSize": { "w": 768, "h": 128 } + }, + "entity:straight-rail/hr-straight-rail-vertical-stone-path": { + "frame": { "x": 5001, "y": 1, "w": 768, "h": 128 }, + "sourceSize": { "w": 768, "h": 128 } + }, + "entity:straight-rail/hr-straight-rail-horizontal-stone-path": { + "frame": { "x": 5001, "y": 131, "w": 384, "h": 256 }, + "sourceSize": { "w": 384, "h": 256 } + }, + "entity:straight-rail/hr-straight-rail-horizontal-ties": { + "frame": { "x": 5001, "y": 389, "w": 384, "h": 256 }, + "sourceSize": { "w": 384, "h": 256 } + }, + "entity:straight-rail/hr-straight-rail-horizontal-backplates": { + "frame": { "x": 5001, "y": 647, "w": 384, "h": 256 }, + "sourceSize": { "w": 384, "h": 256 } + }, + "entity:straight-rail/hr-straight-rail-horizontal-stone-path-background": { + "frame": { "x": 5001, "y": 905, "w": 384, "h": 256 }, + "sourceSize": { "w": 384, "h": 256 } + }, + "entity:straight-rail/hr-straight-rail-horizontal-metals": { + "frame": { "x": 5001, "y": 1163, "w": 384, "h": 256 }, + "sourceSize": { "w": 384, "h": 256 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-1": { + "frame": { "x": 5001, "y": 1421, "w": 358, "h": 270 }, + "sourceSize": { "w": 358, "h": 270 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-5": { + "frame": { "x": 5361, "y": 1421, "w": 358, "h": 270 }, + "sourceSize": { "w": 358, "h": 270 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-9": { + "frame": { "x": 5001, "y": 1693, "w": 358, "h": 270 }, + "sourceSize": { "w": 358, "h": 270 } + }, + "entity:artillery-wagon/hr-artillery-wagon-cannon-base-13": { + "frame": { "x": 5361, "y": 1693, "w": 358, "h": 270 }, + "sourceSize": { "w": 358, "h": 270 } + }, + "entity:storage-tank/hr-storage-tank": { + "frame": { "x": 5001, "y": 1965, "w": 438, "h": 215 }, + "sourceSize": { "w": 438, "h": 215 } + }, + "entity:steam-engine/hr-steam-engine-H": { + "frame": { "x": 5001, "y": 2182, "w": 352, "h": 257 }, + "sourceSize": { "w": 352, "h": 257 } + }, + "entity:steam-engine/hr-steam-engine-V": { + "frame": { "x": 5001, "y": 2441, "w": 225, "h": 391 }, + "sourceSize": { "w": 225, "h": 391 } + }, + "entity:substation/substation": { + "frame": { "x": 5228, "y": 2441, "w": 528, "h": 158 }, + "sourceSize": { "w": 528, "h": 158 } + }, + "entity:circuit-connector/hr-ccm-universal-04a-base-sequence": { + "frame": { "x": 5228, "y": 2601, "w": 416, "h": 200 }, + "sourceSize": { "w": 416, "h": 200 } + }, + "entity:combinator/hr-decider-combinator": { + "frame": { "x": 5001, "y": 2834, "w": 624, "h": 132 }, + "sourceSize": { "w": 624, "h": 132 } + }, + "entity:steam-turbine/hr-steam-turbine-H": { + "frame": { "x": 5387, "y": 131, "w": 320, "h": 245 }, + "sourceSize": { "w": 320, "h": 245 } + }, + "entity:transport-belt/hr-transport-belt": { + "frame": { "x": 5001, "y": 2968, "w": 80, "h": 960 }, + "sourceSize": { "w": 80, "h": 960 } + }, + "entity:steam-turbine/hr-steam-turbine-V": { + "frame": { "x": 5083, "y": 2968, "w": 217, "h": 347 }, + "sourceSize": { "w": 217, "h": 347 } + }, + "entity:underground-belt/hr-underground-belt-structure": { + "frame": { "x": 5302, "y": 2968, "w": 424, "h": 170 }, + "sourceSize": { "w": 424, "h": 170 } + }, + "entity:express-underground-belt/hr-express-underground-belt-structure": { + "frame": { "x": 5302, "y": 3140, "w": 424, "h": 170 }, + "sourceSize": { "w": 424, "h": 170 } + }, + "entity:fast-underground-belt/hr-fast-underground-belt-structure": { + "frame": { "x": 5083, "y": 3317, "w": 424, "h": 170 }, + "sourceSize": { "w": 424, "h": 170 } + }, + "entity:combinator/hr-arithmetic-combinator": { + "frame": { "x": 5083, "y": 3489, "w": 576, "h": 124 }, + "sourceSize": { "w": 576, "h": 124 } + }, + "entity:circuit-connector/hr-ccm-universal-04h-green-LED-sequence": { + "frame": { "x": 5355, "y": 2182, "w": 384, "h": 184 }, + "sourceSize": { "w": 384, "h": 184 } + }, + "entity:circuit-connector/hr-ccm-universal-04i-red-LED-sequence": { + "frame": { "x": 5083, "y": 3615, "w": 384, "h": 184 }, + "sourceSize": { "w": 384, "h": 184 } + }, + "entity:medium-electric-pole/medium-electric-pole": { + "frame": { "x": 5083, "y": 3801, "w": 544, "h": 122 }, + "sourceSize": { "w": 544, "h": 122 } + }, + "entity:offshore-pump/offshore-pump": { + "frame": { "x": 5001, "y": 3930, "w": 640, "h": 102 }, + "sourceSize": { "w": 640, "h": 102 } + }, + "entity:boiler/hr-boiler-E-idle": { + "frame": { "x": 5001, "y": 4034, "w": 216, "h": 301 }, + "sourceSize": { "w": 216, "h": 301 } + }, + "entity:circuit-connector/hr-ccm-universal-04f-blue-LED-off-sequence": { + "frame": { "x": 5387, "y": 389, "w": 368, "h": 176 }, + "sourceSize": { "w": 368, "h": 176 } + }, + "entity:heat-exchanger/hr-heatex-E-idle": { + "frame": { "x": 5219, "y": 4034, "w": 211, "h": 301 }, + "sourceSize": { "w": 211, "h": 301 } + }, + "entity:roboport/hr-roboport-base": { + "frame": { "x": 5432, "y": 4034, "w": 228, "h": 277 }, + "sourceSize": { "w": 228, "h": 277 } + }, + "entity:chemical-plant/hr-boiling-window-green-patch": { + "frame": { "x": 5001, "y": 4337, "w": 522, "h": 119 }, + "sourceSize": { "w": 522, "h": 119 } + }, + "entity:flamethrower-turret/flamethrower-turret-gun-extension": { + "frame": { "x": 4201, "y": 1157, "w": 78, "h": 780 }, + "sourceSize": { "w": 78, "h": 780 } + }, + "entity:small-electric-pole/small-electric-pole": { + "frame": { "x": 5001, "y": 4458, "w": 479, "h": 124 }, + "sourceSize": { "w": 479, "h": 124 } + }, + "entity:boiler/hr-boiler-N-idle": { + "frame": { "x": 5387, "y": 647, "w": 269, "h": 221 }, + "sourceSize": { "w": 269, "h": 221 } + }, + "entity:heat-exchanger/hr-heatex-N-idle": { + "frame": { "x": 5387, "y": 905, "w": 269, "h": 221 }, + "sourceSize": { "w": 269, "h": 221 } + }, + "entity:flamethrower-turret/flamethrower-turret-gun-extension-mask": { + "frame": { "x": 4281, "y": 1157, "w": 74, "h": 732 }, + "sourceSize": { "w": 74, "h": 732 } + }, + "entity:heat-exchanger/hr-heatex-W-idle": { + "frame": { "x": 5001, "y": 4584, "w": 196, "h": 273 }, + "sourceSize": { "w": 196, "h": 273 } + }, + "entity:boiler/hr-boiler-W-idle": { + "frame": { "x": 5199, "y": 4584, "w": 196, "h": 273 }, + "sourceSize": { "w": 196, "h": 273 } + }, + "entity:electric-furnace/hr-electric-furnace": { + "frame": { "x": 5387, "y": 1163, "w": 239, "h": 219 }, + "sourceSize": { "w": 239, "h": 219 } + }, + "entity:heat-exchanger/hr-heatex-S-idle": { + "frame": { "x": 5441, "y": 1965, "w": 260, "h": 201 }, + "sourceSize": { "w": 260, "h": 201 } + }, + "entity:solar-panel/hr-solar-panel": { + "frame": { "x": 5397, "y": 4584, "w": 230, "h": 224 }, + "sourceSize": { "w": 230, "h": 224 } + }, + "entity:assembling-machine-3/hr-assembling-machine-3": { + "frame": { "x": 4745, "y": 1931, "w": 214, "h": 237 }, + "sourceSize": { "w": 214, "h": 237 } + }, + "entity:centrifuge/hr-centrifuge-C": { + "frame": { "x": 4745, "y": 2170, "w": 237, "h": 214 }, + "sourceSize": { "w": 237, "h": 214 } + }, + "entity:boiler/hr-boiler-S-idle": { + "frame": { "x": 3571, "y": 1335, "w": 260, "h": 192 }, + "sourceSize": { "w": 260, "h": 192 } + }, + "entity:radar/hr-radar": { + "frame": { "x": 4777, "y": 2856, "w": 196, "h": 254 }, + "sourceSize": { "w": 196, "h": 254 } + }, + "entity:assembling-machine-1/hr-assembling-machine-1": { + "frame": { "x": 4777, "y": 3242, "w": 214, "h": 226 }, + "sourceSize": { "w": 214, "h": 226 } + }, + "entity:combinator/hr-constant-combinator": { + "frame": { "x": 3127, "y": 819, "w": 456, "h": 102 }, + "sourceSize": { "w": 456, "h": 102 } + }, + "entity:assembling-machine-2/hr-assembling-machine-2": { + "frame": { "x": 4201, "y": 1939, "w": 214, "h": 218 }, + "sourceSize": { "w": 214, "h": 218 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-N": { + "frame": { "x": 4201, "y": 2159, "w": 196, "h": 226 }, + "sourceSize": { "w": 196, "h": 226 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-S": { + "frame": { "x": 4201, "y": 2387, "w": 196, "h": 219 }, + "sourceSize": { "w": 196, "h": 219 } + }, + "entity:pumpjack/hr-pumpjack-horsehead": { + "frame": { "x": 4201, "y": 2608, "w": 206, "h": 202 }, + "sourceSize": { "w": 206, "h": 202 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-E": { + "frame": { "x": 4201, "y": 2812, "w": 211, "h": 197 }, + "sourceSize": { "w": 211, "h": 197 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-W": { + "frame": { "x": 3491, "y": 1939, "w": 211, "h": 197 }, + "sourceSize": { "w": 211, "h": 197 } + }, + "entity:artillery-turret/hr-artillery-turret-base": { + "frame": { "x": 3491, "y": 2138, "w": 207, "h": 199 }, + "sourceSize": { "w": 207, "h": 199 } + }, + "entity:roboport/hr-roboport-base-animation": { + "frame": { "x": 3127, "y": 923, "w": 664, "h": 59 }, + "sourceSize": { "w": 664, "h": 59 } + }, + "entity:laser-turret/laser-turret-gun": { + "frame": { "x": 3843, "y": 1539, "w": 68, "h": 544 }, + "sourceSize": { "w": 68, "h": 544 } + }, + "entity:centrifuge/hr-centrifuge-B": { + "frame": { "x": 3843, "y": 2085, "w": 156, "h": 234 }, + "sourceSize": { "w": 156, "h": 234 } + }, + "entity:centrifuge/hr-centrifuge-A": { + "frame": { "x": 3843, "y": 2321, "w": 139, "h": 246 }, + "sourceSize": { "w": 139, "h": 246 } + }, + "entity:14-silo-front/14-silo-front": { + "frame": { "x": 4037, "y": 3401, "w": 352, "h": 96 }, + "sourceSize": { "w": 352, "h": 96 } + }, + "entity:lab/hr-lab": { + "frame": { "x": 5469, "y": 3615, "w": 194, "h": 174 }, + "sourceSize": { "w": 194, "h": 174 } + }, + "entity:inserter/hr-inserter-platform": { + "frame": { "x": 2453, "y": 986, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:filter-inserter/hr-filter-inserter-platform": { + "frame": { "x": 2875, "y": 986, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:stack-inserter/hr-stack-inserter-platform": { + "frame": { "x": 3297, "y": 986, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:fast-inserter/hr-fast-inserter-platform": { + "frame": { "x": 1649, "y": 1529, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:stack-filter-inserter/hr-stack-filter-inserter-platform": { + "frame": { "x": 2071, "y": 1529, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:burner-inserter/hr-burner-inserter-platform": { + "frame": { "x": 2493, "y": 1529, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:long-handed-inserter/hr-long-handed-inserter-platform": { + "frame": { "x": 2915, "y": 1529, "w": 420, "h": 79 }, + "sourceSize": { "w": 420, "h": 79 } + }, + "entity:burner-mining-drill/hr-burner-mining-drill-N": { + "frame": { "x": 3843, "y": 2569, "w": 173, "h": 188 }, + "sourceSize": { "w": 173, "h": 188 } + }, + "entity:burner-mining-drill/hr-burner-mining-drill-W": { + "frame": { "x": 3843, "y": 2759, "w": 180, "h": 176 }, + "sourceSize": { "w": 180, "h": 176 } + }, + "entity:burner-mining-drill/hr-burner-mining-drill-E": { + "frame": { "x": 5509, "y": 3317, "w": 185, "h": 168 }, + "sourceSize": { "w": 185, "h": 168 } + }, + "entity:burner-mining-drill/hr-burner-mining-drill-S": { + "frame": { "x": 4745, "y": 2386, "w": 174, "h": 174 }, + "sourceSize": { "w": 174, "h": 174 } + }, + "entity:steel-furnace/hr-steel-furnace": { + "frame": { "x": 3609, "y": 1077, "w": 171, "h": 174 }, + "sourceSize": { "w": 171, "h": 174 } + }, + "entity:pipe/hr-pipe-straight-vertical-single": { + "frame": { "x": 3653, "y": 1642, "w": 160, "h": 160 }, + "sourceSize": { "w": 160, "h": 160 } + }, + "entity:stone-furnace/hr-stone-furnace": { + "frame": { "x": 4777, "y": 3470, "w": 151, "h": 146 }, + "sourceSize": { "w": 151, "h": 146 } + }, + "entity:04-05-doors/05-door-front": { + "frame": { "x": 5525, "y": 4337, "w": 192, "h": 112 }, + "sourceSize": { "w": 192, "h": 112 } + }, + "entity:stack-inserter/hr-stack-inserter-hand-open": { + "frame": { "x": 5628, "y": 1163, "w": 130, "h": 164 }, + "sourceSize": { "w": 130, "h": 164 } + }, + "entity:stack-filter-inserter/hr-stack-filter-inserter-hand-open": { + "frame": { "x": 5629, "y": 4584, "w": 130, "h": 164 }, + "sourceSize": { "w": 130, "h": 164 } + }, + "entity:04-05-doors/04-door-back": { + "frame": { "x": 5482, "y": 4458, "w": 192, "h": 108 }, + "sourceSize": { "w": 192, "h": 108 } + }, + "entity:laser-turret/laser-turret-gun-mask": { + "frame": { "x": 4357, "y": 1157, "w": 54, "h": 352 }, + "sourceSize": { "w": 54, "h": 352 } + }, + "entity:pump/hr-pump-south": { + "frame": { "x": 5646, "y": 2601, "w": 114, "h": 160 }, + "sourceSize": { "w": 114, "h": 160 } + }, + "entity:laser-turret/laser-turret-gun-start": { + "frame": { "x": 5662, "y": 4034, "w": 66, "h": 268 }, + "sourceSize": { "w": 66, "h": 268 } + }, + "entity:pump/hr-pump-north": { + "frame": { "x": 5658, "y": 647, "w": 103, "h": 164 }, + "sourceSize": { "w": 103, "h": 164 } + }, + "entity:heat-exchanger/hr-heatex-endings": { + "frame": { "x": 5387, "y": 567, "w": 256, "h": 64 }, + "sourceSize": { "w": 256, "h": 64 } + }, + "entity:gun-turret/gun-turret-gun-extension": { + "frame": { "x": 3913, "y": 1539, "w": 65, "h": 252 }, + "sourceSize": { "w": 65, "h": 252 } + }, + "entity:pipe/hr-pipe-ending-right": { + "frame": { "x": 5627, "y": 2834, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-vertical-window-background": { + "frame": { "x": 4777, "y": 3112, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-ending-up": { + "frame": { "x": 3704, "y": 1939, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-horizontal-window-background": { + "frame": { "x": 3700, "y": 2138, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-cross": { + "frame": { "x": 3491, "y": 2339, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-to-ground/hr-pipe-to-ground-left": { + "frame": { "x": 3621, "y": 2339, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-ending-left": { + "frame": { "x": 3293, "y": 2517, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-covers/hr-pipe-cover-south": { + "frame": { "x": 3423, "y": 2517, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-t-left": { + "frame": { "x": 3553, "y": 2517, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-covers/hr-pipe-cover-west": { + "frame": { "x": 3683, "y": 2517, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-covers/hr-pipe-cover-east": { + "frame": { "x": 3293, "y": 2647, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-t-right": { + "frame": { "x": 3423, "y": 2647, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-ending-down": { + "frame": { "x": 3553, "y": 2647, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-straight-vertical": { + "frame": { "x": 3683, "y": 2647, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-covers/hr-pipe-cover-north": { + "frame": { "x": 3861, "y": 2949, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-straight-vertical-window": { + "frame": { "x": 3861, "y": 3079, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-to-ground/hr-pipe-to-ground-down": { + "frame": { "x": 3861, "y": 3209, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-to-ground/hr-pipe-to-ground-right": { + "frame": { "x": 3861, "y": 3339, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-straight-horizontal-window": { + "frame": { "x": 4047, "y": 3527, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe-to-ground/hr-pipe-to-ground-up": { + "frame": { "x": 4177, "y": 3527, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-straight-horizontal": { + "frame": { "x": 4047, "y": 3657, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-corner-up-right": { + "frame": { "x": 4177, "y": 3657, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-corner-up-left": { + "frame": { "x": 4047, "y": 3913, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-corner-down-right": { + "frame": { "x": 4177, "y": 3913, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-corner-down-left": { + "frame": { "x": 4047, "y": 4043, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-t-up": { + "frame": { "x": 4177, "y": 4043, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:pipe/hr-pipe-t-down": { + "frame": { "x": 4625, "y": 4299, "w": 128, "h": 128 }, + "sourceSize": { "w": 128, "h": 128 } + }, + "entity:fast-splitter/hr-fast-splitter-east": { + "frame": { "x": 5658, "y": 905, "w": 93, "h": 157 }, + "sourceSize": { "w": 93, "h": 157 } + }, + "entity:express-splitter/hr-express-splitter-east": { + "frame": { "x": 5665, "y": 3615, "w": 93, "h": 157 }, + "sourceSize": { "w": 93, "h": 157 } + }, + "entity:splitter/hr-splitter-east": { + "frame": { "x": 4905, "y": 3628, "w": 93, "h": 157 }, + "sourceSize": { "w": 93, "h": 157 } + }, + "entity:pump/hr-pump-west": { + "frame": { "x": 5629, "y": 3801, "w": 131, "h": 111 }, + "sourceSize": { "w": 131, "h": 111 } + }, + "entity:fast-splitter/hr-fast-splitter-west": { + "frame": { "x": 3913, "y": 1793, "w": 94, "h": 154 }, + "sourceSize": { "w": 94, "h": 154 } + }, + "entity:express-splitter/hr-express-splitter-west": { + "frame": { "x": 4625, "y": 4493, "w": 94, "h": 154 }, + "sourceSize": { "w": 94, "h": 154 } + }, + "entity:splitter/hr-splitter-west": { + "frame": { "x": 4721, "y": 4493, "w": 94, "h": 154 }, + "sourceSize": { "w": 94, "h": 154 } + }, + "entity:stone-wall/wall-patch": { + "frame": { "x": 5355, "y": 2368, "w": 208, "h": 68 }, + "sourceSize": { "w": 208, "h": 68 } + }, + "entity:pump/hr-pump-east": { + "frame": { "x": 3293, "y": 2777, "w": 130, "h": 109 }, + "sourceSize": { "w": 130, "h": 109 } + }, + "entity:roboport/hr-roboport-base-patch": { + "frame": { "x": 3585, "y": 819, "w": 138, "h": 100 }, + "sourceSize": { "w": 138, "h": 100 } + }, + "entity:accumulator/accumulator": { + "frame": { "x": 3653, "y": 1804, "w": 124, "h": 103 }, + "sourceSize": { "w": 124, "h": 103 } + }, + "entity:combinator/hr-combinator-displays": { + "frame": { "x": 5565, "y": 2368, "w": 180, "h": 66 }, + "sourceSize": { "w": 180, "h": 66 } + }, + "entity:filter-inserter/hr-filter-inserter-hand-open": { + "frame": { "x": 5696, "y": 3317, "w": 72, "h": 164 }, + "sourceSize": { "w": 72, "h": 164 } + }, + "entity:fast-inserter/hr-fast-inserter-hand-open": { + "frame": { "x": 4921, "y": 2386, "w": 72, "h": 164 }, + "sourceSize": { "w": 72, "h": 164 } + }, + "entity:long-handed-inserter/hr-long-handed-inserter-hand-open": { + "frame": { "x": 4921, "y": 3870, "w": 72, "h": 164 }, + "sourceSize": { "w": 72, "h": 164 } + }, + "entity:burner-inserter/hr-burner-inserter-hand-open": { + "frame": { "x": 1, "y": 4881, "w": 72, "h": 164 }, + "sourceSize": { "w": 72, "h": 164 } + }, + "entity:inserter/hr-inserter-hand-open": { + "frame": { "x": 75, "y": 4881, "w": 72, "h": 164 }, + "sourceSize": { "w": 72, "h": 164 } + }, + "entity:circuit-connector/hr-ccm-inserter-01-wire-sequence": { + "frame": { "x": 5397, "y": 4810, "w": 248, "h": 46 }, + "sourceSize": { "w": 248, "h": 46 } + }, + "entity:express-splitter/hr-express-splitter-north": { + "frame": { "x": 3337, "y": 1529, "w": 164, "h": 70 }, + "sourceSize": { "w": 164, "h": 70 } + }, + "entity:fast-splitter/hr-fast-splitter-north": { + "frame": { "x": 3503, "y": 1529, "w": 164, "h": 70 }, + "sourceSize": { "w": 164, "h": 70 } + }, + "entity:splitter/hr-splitter-north": { + "frame": { "x": 3669, "y": 1529, "w": 164, "h": 70 }, + "sourceSize": { "w": 164, "h": 70 } + }, + "entity:connector/hr-CCM-BELT-SPRITES-SCANNER": { + "frame": { "x": 4201, "y": 3011, "w": 176, "h": 64 }, + "sourceSize": { "w": 176, "h": 64 } + }, + "entity:splitter/hr-splitter-south": { + "frame": { "x": 3425, "y": 2777, "w": 168, "h": 67 }, + "sourceSize": { "w": 168, "h": 67 } + }, + "entity:fast-splitter/hr-fast-splitter-south": { + "frame": { "x": 3595, "y": 2777, "w": 168, "h": 67 }, + "sourceSize": { "w": 168, "h": 67 } + }, + "entity:express-splitter/hr-express-splitter-south": { + "frame": { "x": 4047, "y": 3787, "w": 168, "h": 67 }, + "sourceSize": { "w": 168, "h": 67 } + }, + "entity:circuit-connector/hr-ccm-inserter-01-LED-G-sequence": { + "frame": { "x": 3495, "y": 709, "w": 216, "h": 50 }, + "sourceSize": { "w": 216, "h": 50 } + }, + "entity:circuit-connector/hr-ccm-inserter-01-LED-R-sequence": { + "frame": { "x": 1949, "y": 766, "w": 216, "h": 50 }, + "sourceSize": { "w": 216, "h": 50 } + }, + "entity:beacon/beacon-base": { + "frame": { "x": 5643, "y": 3930, "w": 116, "h": 93 }, + "sourceSize": { "w": 116, "h": 93 } + }, + "entity:programmable-speaker/hr-programmable-speaker": { + "frame": { "x": 5709, "y": 131, "w": 59, "h": 178 }, + "sourceSize": { "w": 59, "h": 178 } + }, + "entity:circuit-connector/hr-ccm-inserter-01-LED-B-on-sequence": { + "frame": { "x": 2167, "y": 766, "w": 240, "h": 42 }, + "sourceSize": { "w": 240, "h": 42 } + }, + "entity:laser-turret/laser-turret-gun-start-mask": { + "frame": { "x": 5703, "y": 1965, "w": 51, "h": 188 }, + "sourceSize": { "w": 51, "h": 188 } + }, + "entity:connector/hr-ccm-belt-04c-LED-B": { + "frame": { "x": 4955, "y": 387, "w": 30, "h": 308 }, + "sourceSize": { "w": 30, "h": 308 } + }, + "entity:power-switch/power-switch": { + "frame": { "x": 3913, "y": 1949, "w": 117, "h": 74 }, + "sourceSize": { "w": 117, "h": 74 } + }, + "entity:circuit-connector/hr-ccm-inserter-01-base-sequence": { + "frame": { "x": 2409, "y": 766, "w": 208, "h": 40 }, + "sourceSize": { "w": 208, "h": 40 } + }, + "entity:laser-turret/laser-turret-base": { + "frame": { "x": 5661, "y": 3489, "w": 98, "h": 82 }, + "sourceSize": { "w": 98, "h": 82 } + }, + "entity:connector/hr-ccm-belt-04e-LED-G": { + "frame": { "x": 5721, "y": 1421, "w": 42, "h": 182 }, + "sourceSize": { "w": 42, "h": 182 } + }, + "entity:gun-turret/gun-turret-base": { + "frame": { "x": 5676, "y": 4458, "w": 90, "h": 75 }, + "sourceSize": { "w": 90, "h": 75 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-south": { + "frame": { "x": 4907, "y": 3112, "w": 70, "h": 90 }, + "sourceSize": { "w": 70, "h": 90 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-north": { + "frame": { "x": 4930, "y": 3470, "w": 69, "h": 86 }, + "sourceSize": { "w": 69, "h": 86 } + }, + "entity:small-lamp/hr-lamp": { + "frame": { "x": 4905, "y": 3787, "w": 83, "h": 70 }, + "sourceSize": { "w": 83, "h": 70 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-east": { + "frame": { "x": 5645, "y": 567, "w": 95, "h": 60 }, + "sourceSize": { "w": 95, "h": 60 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-west": { + "frame": { "x": 5658, "y": 1064, "w": 93, "h": 59 }, + "sourceSize": { "w": 93, "h": 59 } + }, + "entity:assembling-machine-2/hr-assembling-machine-2-pipe-S": { + "frame": { "x": 3725, "y": 819, "w": 88, "h": 61 }, + "sourceSize": { "w": 88, "h": 61 } + }, + "entity:assembling-machine-3/hr-assembling-machine-3-pipe-S": { + "frame": { "x": 3719, "y": 986, "w": 88, "h": 61 }, + "sourceSize": { "w": 88, "h": 61 } + }, + "entity:circuit-connector/hr-ccm-inserter-01-LED-B-off-sequence": { + "frame": { "x": 5387, "y": 870, "w": 184, "h": 26 }, + "sourceSize": { "w": 184, "h": 26 } + }, + "entity:stack-inserter/hr-stack-inserter-hand-base": { + "frame": { "x": 5721, "y": 1693, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:long-handed-inserter/hr-long-handed-inserter-hand-base": { + "frame": { "x": 5728, "y": 2968, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:burner-inserter/hr-burner-inserter-hand-base": { + "frame": { "x": 5728, "y": 3140, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:stack-filter-inserter/hr-stack-filter-inserter-hand-base": { + "frame": { "x": 5730, "y": 4034, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:filter-inserter/hr-filter-inserter-hand-base": { + "frame": { "x": 4955, "y": 773, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:inserter/hr-inserter-hand-base": { + "frame": { "x": 4955, "y": 911, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:fast-inserter/hr-fast-inserter-hand-base": { + "frame": { "x": 4955, "y": 1159, "w": 32, "h": 136 }, + "sourceSize": { "w": 32, "h": 136 } + }, + "entity:connector/hr-ccm-belt-04d-LED-R": { + "frame": { "x": 5721, "y": 1831, "w": 34, "h": 126 }, + "sourceSize": { "w": 34, "h": 126 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-left-1": { + "frame": { "x": 4921, "y": 4036, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-right-6": { + "frame": { "x": 4357, "y": 1511, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-left-2": { + "frame": { "x": 4357, "y": 1577, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-horizontal-2": { + "frame": { "x": 4357, "y": 1643, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-left-3": { + "frame": { "x": 4357, "y": 1709, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-left-6": { + "frame": { "x": 4357, "y": 1775, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-left-4": { + "frame": { "x": 3704, "y": 2069, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-right-5": { + "frame": { "x": 3770, "y": 2069, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-left-5": { + "frame": { "x": 3700, "y": 2268, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-horizontal-1": { + "frame": { "x": 3766, "y": 2268, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-right-2": { + "frame": { "x": 3751, "y": 2339, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-left-6": { + "frame": { "x": 3765, "y": 2777, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-right-1": { + "frame": { "x": 4307, "y": 3527, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-6": { + "frame": { "x": 4307, "y": 3657, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-right-2": { + "frame": { "x": 4217, "y": 3787, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-5": { + "frame": { "x": 4283, "y": 3787, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-4": { + "frame": { "x": 4349, "y": 3787, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-3": { + "frame": { "x": 4307, "y": 3913, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:gate/gate-rail-base-vertical": { + "frame": { "x": 4307, "y": 4043, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-ending-left-1": { + "frame": { "x": 4047, "y": 4173, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-ending-right-1": { + "frame": { "x": 4113, "y": 4173, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-ending-down-1": { + "frame": { "x": 4179, "y": 4173, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-ending-up-1": { + "frame": { "x": 4245, "y": 4173, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-t-1": { + "frame": { "x": 4311, "y": 4173, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-t-left-1": { + "frame": { "x": 4755, "y": 4299, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-right-3": { + "frame": { "x": 4821, "y": 4299, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-right-4": { + "frame": { "x": 4887, "y": 4299, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-right-5": { + "frame": { "x": 4817, "y": 4493, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-right-6": { + "frame": { "x": 4883, "y": 4493, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-left-1": { + "frame": { "x": 4817, "y": 4559, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-left-2": { + "frame": { "x": 4883, "y": 4559, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-2": { + "frame": { "x": 4429, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-1": { + "frame": { "x": 4495, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-vertical-single": { + "frame": { "x": 4561, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-right-4": { + "frame": { "x": 4627, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-t-right-1": { + "frame": { "x": 4693, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-left-3": { + "frame": { "x": 4759, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-left-4": { + "frame": { "x": 4825, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-right-1": { + "frame": { "x": 4891, "y": 4687, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-horizontal-6": { + "frame": { "x": 149, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-horizontal-5": { + "frame": { "x": 215, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-up-right-3": { + "frame": { "x": 281, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-horizontal-4": { + "frame": { "x": 347, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-corner-down-left-5": { + "frame": { "x": 413, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-t-down-1": { + "frame": { "x": 479, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-straight-horizontal-3": { + "frame": { "x": 545, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:heat-pipe/hr-heat-pipe-t-up-1": { + "frame": { "x": 611, "y": 4881, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "entity:roboport/hr-roboport-door-down": { + "frame": { "x": 5658, "y": 813, "w": 97, "h": 41 }, + "sourceSize": { "w": 97, "h": 41 } + }, + "entity:electric-furnace/hr-electric-furnace-propeller-1": { + "frame": { "x": 5573, "y": 870, "w": 148, "h": 25 }, + "sourceSize": { "w": 148, "h": 25 } + }, + "entity:13-arm-front-red-lights-front/arm-03-front": { + "frame": { "x": 4359, "y": 3079, "w": 54, "h": 70 }, + "sourceSize": { "w": 54, "h": 70 } + }, + "entity:roboport/hr-roboport-door-up": { + "frame": { "x": 5628, "y": 1329, "w": 97, "h": 38 }, + "sourceSize": { "w": 97, "h": 38 } + }, + "entity:08-arms-back-satellite-animation/arm-02-right": { + "frame": { "x": 5629, "y": 4750, "w": 81, "h": 43 }, + "sourceSize": { "w": 81, "h": 43 } + }, + "entity:pipe/fluid-flow-low-temperature": { + "frame": { "x": 5387, "y": 1128, "w": 160, "h": 20 }, + "sourceSize": { "w": 160, "h": 20 } + }, + "entity:pipe/fluid-flow-medium-temperature": { + "frame": { "x": 5549, "y": 1128, "w": 160, "h": 20 }, + "sourceSize": { "w": 160, "h": 20 } + }, + "entity:pipe/fluid-flow-high-temperature": { + "frame": { "x": 5387, "y": 1384, "w": 160, "h": 20 }, + "sourceSize": { "w": 160, "h": 20 } + }, + "entity:assembling-machine-3/hr-assembling-machine-3-pipe-E": { + "frame": { "x": 5721, "y": 1605, "w": 42, "h": 76 }, + "sourceSize": { "w": 42, "h": 76 } + }, + "entity:assembling-machine-2/hr-assembling-machine-2-pipe-E": { + "frame": { "x": 5719, "y": 4337, "w": 42, "h": 76 }, + "sourceSize": { "w": 42, "h": 76 } + }, + "entity:gun-turret/gun-turret-gun-extension-mask": { + "frame": { "x": 5741, "y": 2182, "w": 24, "h": 124 }, + "sourceSize": { "w": 24, "h": 124 } + }, + "entity:gate/gate-rail-base-horizontal": { + "frame": { "x": 5647, "y": 4810, "w": 64, "h": 45 }, + "sourceSize": { "w": 64, "h": 45 } + }, + "entity:assembling-machine-3/hr-assembling-machine-3-pipe-W": { + "frame": { "x": 5730, "y": 4172, "w": 39, "h": 73 }, + "sourceSize": { "w": 39, "h": 73 } + }, + "entity:assembling-machine-2/hr-assembling-machine-2-pipe-W": { + "frame": { "x": 4955, "y": 697, "w": 39, "h": 73 }, + "sourceSize": { "w": 39, "h": 73 } + }, + "entity:assembling-machine-2/hr-assembling-machine-2-pipe-N": { + "frame": { "x": 5646, "y": 2763, "w": 71, "h": 38 }, + "sourceSize": { "w": 71, "h": 38 } + }, + "entity:assembling-machine-3/hr-assembling-machine-3-pipe-N": { + "frame": { "x": 5661, "y": 3573, "w": 71, "h": 38 }, + "sourceSize": { "w": 71, "h": 38 } + }, + "entity:beacon/beacon-antenna": { + "frame": { "x": 5709, "y": 311, "w": 54, "h": 50 }, + "sourceSize": { "w": 54, "h": 50 } + }, + "entity:08-arms-back-satellite-animation/arm-01-back": { + "frame": { "x": 4930, "y": 3558, "w": 54, "h": 50 }, + "sourceSize": { "w": 54, "h": 50 } + }, + "entity:steel-furnace/steel-furnace-glow": { + "frame": { "x": 4357, "y": 1841, "w": 60, "h": 43 }, + "sourceSize": { "w": 60, "h": 43 } + }, + "entity:pipe/hr-fluid-background": { + "frame": { "x": 4281, "y": 1891, "w": 64, "h": 40 }, + "sourceSize": { "w": 64, "h": 40 } + }, + "entity:laser-turret/laser-turret-base-mask": { + "frame": { "x": 4359, "y": 3151, "w": 54, "h": 46 }, + "sourceSize": { "w": 54, "h": 46 } + }, + "entity:gate/gate-rail-base-mask-vertical": { + "frame": { "x": 4347, "y": 1891, "w": 63, "h": 39 }, + "sourceSize": { "w": 63, "h": 39 } + }, + "entity:gun-turret/gun-turret-base-mask": { + "frame": { "x": 4359, "y": 3199, "w": 52, "h": 47 }, + "sourceSize": { "w": 52, "h": 47 } + }, + "entity:gate/gate-rail-base-mask-horizontal": { + "frame": { "x": 5713, "y": 4810, "w": 53, "h": 45 }, + "sourceSize": { "w": 53, "h": 45 } + }, + "entity:connector/transport-belt-connector-frame-main-scanner-sw-se": { + "frame": { "x": 5753, "y": 905, "w": 15, "h": 112 }, + "sourceSize": { "w": 15, "h": 112 } + }, + "entity:iron-chest/iron-chest": { + "frame": { "x": 5719, "y": 2763, "w": 48, "h": 34 }, + "sourceSize": { "w": 48, "h": 34 } + }, + "entity:storage-tank/hr-window-background": { + "frame": { "x": 5730, "y": 4247, "w": 34, "h": 48 }, + "sourceSize": { "w": 34, "h": 48 } + }, + "entity:steel-chest/steel-chest": { + "frame": { "x": 5719, "y": 4415, "w": 48, "h": 34 }, + "sourceSize": { "w": 48, "h": 34 } + }, + "entity:wooden-chest/wooden-chest": { + "frame": { "x": 5712, "y": 4750, "w": 46, "h": 33 }, + "sourceSize": { "w": 46, "h": 33 } + }, + "entity:gate/gate-rail-horizontal-left": { + "frame": { "x": 4955, "y": 1049, "w": 32, "h": 47 }, + "sourceSize": { "w": 32, "h": 47 } + }, + "entity:electric-furnace/hr-electric-furnace-propeller-2": { + "frame": { "x": 5549, "y": 1384, "w": 92, "h": 15 }, + "sourceSize": { "w": 92, "h": 15 } + }, + "entity:connector/transport-belt-connector-frame-main-scanner-nw-ne": { + "frame": { "x": 5755, "y": 1693, "w": 14, "h": 96 }, + "sourceSize": { "w": 14, "h": 96 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-east-mask": { + "frame": { "x": 4955, "y": 1098, "w": 33, "h": 42 }, + "sourceSize": { "w": 33, "h": 42 } + }, + "entity:gate/gate-rail-horizontal-right": { + "frame": { "x": 4955, "y": 1297, "w": 32, "h": 43 }, + "sourceSize": { "w": 32, "h": 43 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-north-mask": { + "frame": { "x": 5727, "y": 1329, "w": 37, "h": 37 }, + "sourceSize": { "w": 37, "h": 37 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-south-mask": { + "frame": { "x": 4955, "y": 1342, "w": 37, "h": 37 }, + "sourceSize": { "w": 37, "h": 37 } + }, + "entity:stone-wall/wall-straight-horizontal-3": { + "frame": { "x": 4955, "y": 1381, "w": 32, "h": 42 }, + "sourceSize": { "w": 32, "h": 42 } + }, + "entity:stone-wall/wall-straight-horizontal-2": { + "frame": { "x": 4955, "y": 1425, "w": 32, "h": 42 }, + "sourceSize": { "w": 32, "h": 42 } + }, + "entity:stone-wall/wall-straight-horizontal-1": { + "frame": { "x": 4955, "y": 1469, "w": 32, "h": 42 }, + "sourceSize": { "w": 32, "h": 42 } + }, + "entity:stone-wall/wall-t-down": { + "frame": { "x": 4955, "y": 1545, "w": 32, "h": 42 }, + "sourceSize": { "w": 32, "h": 42 } + }, + "entity:flamethrower-turret/flamethrower-turret-base-west-mask": { + "frame": { "x": 4955, "y": 1589, "w": 33, "h": 40 }, + "sourceSize": { "w": 33, "h": 40 } + }, + "entity:logistic-chest/logistic-chest-passive-provider": { + "frame": { "x": 4955, "y": 1631, "w": 39, "h": 33 }, + "sourceSize": { "w": 39, "h": 33 } + }, + "entity:gate/gate-vertical": { + "frame": { "x": 5742, "y": 567, "w": 21, "h": 60 }, + "sourceSize": { "w": 21, "h": 60 } + }, + "entity:logistic-chest/logistic-chest-requester": { + "frame": { "x": 5728, "y": 3106, "w": 39, "h": 32 }, + "sourceSize": { "w": 39, "h": 32 } + }, + "entity:logistic-chest/logistic-chest-active-provider": { + "frame": { "x": 5728, "y": 3278, "w": 39, "h": 32 }, + "sourceSize": { "w": 39, "h": 32 } + }, + "entity:gate/gate-rail-vertical-right": { + "frame": { "x": 5741, "y": 2308, "w": 22, "h": 55 }, + "sourceSize": { "w": 22, "h": 55 } + }, + "entity:logistic-chest/logistic-chest-buffer": { + "frame": { "x": 4955, "y": 1666, "w": 38, "h": 32 }, + "sourceSize": { "w": 38, "h": 32 } + }, + "entity:logistic-chest/logistic-chest-storage": { + "frame": { "x": 4955, "y": 1700, "w": 38, "h": 32 }, + "sourceSize": { "w": 38, "h": 32 } + }, + "entity:gate/gate-rail-vertical-left": { + "frame": { "x": 5747, "y": 2368, "w": 22, "h": 54 }, + "sourceSize": { "w": 22, "h": 54 } + }, + "entity:gate/gate-horizontal": { + "frame": { "x": 5734, "y": 3573, "w": 32, "h": 36 }, + "sourceSize": { "w": 32, "h": 36 } + }, + "entity:stone-wall/wall-ending-right": { + "frame": { "x": 4955, "y": 1734, "w": 27, "h": 42 }, + "sourceSize": { "w": 27, "h": 42 } + }, + "entity:stone-wall/wall-ending-left": { + "frame": { "x": 4955, "y": 1778, "w": 27, "h": 42 }, + "sourceSize": { "w": 27, "h": 42 } + }, + "entity:stone-wall/wall-corner-left-down": { + "frame": { "x": 4955, "y": 1822, "w": 27, "h": 42 }, + "sourceSize": { "w": 27, "h": 42 } + }, + "entity:stone-wall/wall-corner-right-down": { + "frame": { "x": 4955, "y": 1866, "w": 27, "h": 42 }, + "sourceSize": { "w": 27, "h": 42 } + }, + "entity:activity-leds/hr-decider-combinator-LED-W": { + "frame": { "x": 5228, "y": 2803, "w": 64, "h": 16 }, + "sourceSize": { "w": 64, "h": 16 } + }, + "entity:activity-leds/hr-decider-combinator-LED-E": { + "frame": { "x": 5294, "y": 2803, "w": 64, "h": 16 }, + "sourceSize": { "w": 64, "h": 16 } + }, + "entity:activity-leds/hr-arithmetic-combinator-LED-S": { + "frame": { "x": 5360, "y": 2803, "w": 64, "h": 16 }, + "sourceSize": { "w": 64, "h": 16 } + }, + "entity:land-mine/land-mine-set-enemy": { + "frame": { "x": 4961, "y": 1931, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "entity:land-mine/land-mine-set": { + "frame": { "x": 4961, "y": 1965, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "entity:land-mine/land-mine": { + "frame": { "x": 4961, "y": 1999, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "entity:gate/gate-base-vertical-mask": { + "frame": { "x": 4961, "y": 2033, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "entity:gate/gate-base-vertical": { + "frame": { "x": 4961, "y": 2067, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "entity:activity-leds/hr-decider-combinator-LED-S": { + "frame": { "x": 5643, "y": 1384, "w": 64, "h": 14 }, + "sourceSize": { "w": 64, "h": 14 } + }, + "entity:activity-leds/hr-arithmetic-combinator-LED-N": { + "frame": { "x": 5426, "y": 2803, "w": 64, "h": 14 }, + "sourceSize": { "w": 64, "h": 14 } + }, + "entity:activity-leds/hr-decider-combinator-LED-N": { + "frame": { "x": 5492, "y": 2803, "w": 64, "h": 14 }, + "sourceSize": { "w": 64, "h": 14 } + }, + "entity:stone-wall/wall-straight-vertical-3": { + "frame": { "x": 4961, "y": 2101, "w": 22, "h": 42 }, + "sourceSize": { "w": 22, "h": 42 } + }, + "entity:stone-wall/wall-straight-vertical-2": { + "frame": { "x": 4975, "y": 2856, "w": 22, "h": 42 }, + "sourceSize": { "w": 22, "h": 42 } + }, + "entity:stone-wall/wall-straight-vertical-1": { + "frame": { "x": 4975, "y": 2900, "w": 22, "h": 42 }, + "sourceSize": { "w": 22, "h": 42 } + }, + "entity:stone-wall/wall-single": { + "frame": { "x": 4975, "y": 2944, "w": 22, "h": 42 }, + "sourceSize": { "w": 22, "h": 42 } + }, + "entity:activity-leds/hr-constant-combinator-LED-S": { + "frame": { "x": 5711, "y": 1128, "w": 56, "h": 16 }, + "sourceSize": { "w": 56, "h": 16 } + }, + "entity:activity-leds/hr-constant-combinator-LED-W": { + "frame": { "x": 5432, "y": 4313, "w": 56, "h": 16 }, + "sourceSize": { "w": 56, "h": 16 } + }, + "entity:gate/wall-patch-south": { + "frame": { "x": 4975, "y": 2988, "w": 22, "h": 40 }, + "sourceSize": { "w": 22, "h": 40 } + }, + "entity:activity-leds/hr-arithmetic-combinator-LED-W": { + "frame": { "x": 5709, "y": 1384, "w": 56, "h": 14 }, + "sourceSize": { "w": 56, "h": 14 } + }, + "entity:activity-leds/hr-constant-combinator-LED-E": { + "frame": { "x": 5558, "y": 2803, "w": 56, "h": 14 }, + "sourceSize": { "w": 56, "h": 14 } + }, + "entity:activity-leds/hr-arithmetic-combinator-LED-E": { + "frame": { "x": 5616, "y": 2803, "w": 56, "h": 14 }, + "sourceSize": { "w": 56, "h": 14 } + }, + "entity:gate/wall-patch-north": { + "frame": { "x": 4975, "y": 3030, "w": 22, "h": 35 }, + "sourceSize": { "w": 22, "h": 35 } + }, + "entity:08-arms-back-satellite-animation/satellite": { + "frame": { "x": 5676, "y": 4535, "w": 27, "h": 28 }, + "sourceSize": { "w": 27, "h": 28 } + }, + "entity:gate/gate-base-horizontal": { + "frame": { "x": 5723, "y": 870, "w": 32, "h": 23 }, + "sourceSize": { "w": 32, "h": 23 } + }, + "entity:gate/gate-base-horizontal-mask": { + "frame": { "x": 5705, "y": 4535, "w": 32, "h": 23 }, + "sourceSize": { "w": 32, "h": 23 } + }, + "entity:activity-leds/hr-constant-combinator-LED-N": { + "frame": { "x": 5709, "y": 363, "w": 56, "h": 12 }, + "sourceSize": { "w": 56, "h": 12 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-S-patch": { + "frame": { "x": 4955, "y": 1513, "w": 25, "h": 28 }, + "sourceSize": { "w": 25, "h": 28 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-W-patch": { + "frame": { "x": 4907, "y": 3204, "w": 25, "h": 28 }, + "sourceSize": { "w": 25, "h": 28 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-N-patch": { + "frame": { "x": 4934, "y": 3204, "w": 25, "h": 28 }, + "sourceSize": { "w": 25, "h": 28 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-E-patch": { + "frame": { "x": 4961, "y": 3204, "w": 25, "h": 27 }, + "sourceSize": { "w": 25, "h": 27 } + }, + "entity:storage-tank/fluid-background": { + "frame": { "x": 5665, "y": 3774, "w": 32, "h": 15 }, + "sourceSize": { "w": 32, "h": 15 } + }, + "entity:gate/wall-diode-green": { + "frame": { "x": 5739, "y": 4535, "w": 21, "h": 22 }, + "sourceSize": { "w": 21, "h": 22 } + }, + "entity:gate/wall-diode-red": { + "frame": { "x": 4961, "y": 2145, "w": 21, "h": 22 }, + "sourceSize": { "w": 21, "h": 22 } + }, + "entity:gate/wall-patch-west": { + "frame": { "x": 5757, "y": 389, "w": 11, "h": 40 }, + "sourceSize": { "w": 11, "h": 40 } + }, + "entity:gate/wall-patch-east": { + "frame": { "x": 5757, "y": 431, "w": 11, "h": 40 }, + "sourceSize": { "w": 11, "h": 40 } + }, + "entity:boiler/hr-boiler-E-patch": { + "frame": { "x": 5757, "y": 473, "w": 6, "h": 36 }, + "sourceSize": { "w": 6, "h": 36 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-E-window-background": { + "frame": { "x": 5753, "y": 1019, "w": 13, "h": 18 }, + "sourceSize": { "w": 13, "h": 18 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-N-window-background": { + "frame": { "x": 5628, "y": 1369, "w": 18, "h": 13 }, + "sourceSize": { "w": 18, "h": 13 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-N-fluid-background": { + "frame": { "x": 5387, "y": 633, "w": 17, "h": 12 }, + "sourceSize": { "w": 17, "h": 12 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-N-fluid-flow": { + "frame": { "x": 5406, "y": 633, "w": 17, "h": 12 }, + "sourceSize": { "w": 17, "h": 12 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-S-window-background": { + "frame": { "x": 5425, "y": 633, "w": 18, "h": 11 }, + "sourceSize": { "w": 18, "h": 11 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-E-fluid-background": { + "frame": { "x": 5757, "y": 511, "w": 11, "h": 17 }, + "sourceSize": { "w": 11, "h": 17 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-W-fluid-flow": { + "frame": { "x": 5757, "y": 530, "w": 10, "h": 18 }, + "sourceSize": { "w": 10, "h": 18 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-W-window-background": { + "frame": { "x": 5757, "y": 813, "w": 10, "h": 17 }, + "sourceSize": { "w": 10, "h": 17 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-S-fluid-background": { + "frame": { "x": 5445, "y": 633, "w": 17, "h": 10 }, + "sourceSize": { "w": 17, "h": 10 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-W-fluid-background": { + "frame": { "x": 5757, "y": 832, "w": 10, "h": 17 }, + "sourceSize": { "w": 10, "h": 17 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-S-fluid-flow": { + "frame": { "x": 5464, "y": 633, "w": 17, "h": 10 }, + "sourceSize": { "w": 17, "h": 10 } + }, + "entity:electric-mining-drill/hr-electric-mining-drill-E-fluid-flow": { + "frame": { "x": 5757, "y": 870, "w": 10, "h": 17 }, + "sourceSize": { "w": 10, "h": 17 } + }, + "entity:train-stop/hr-train-stop-north-light-1": { + "frame": { "x": 5387, "y": 378, "w": 17, "h": 9 }, + "sourceSize": { "w": 17, "h": 9 } + }, + "entity:train-stop/hr-train-stop-north-red-light-1": { + "frame": { "x": 5406, "y": 378, "w": 17, "h": 9 }, + "sourceSize": { "w": 17, "h": 9 } + }, + "entity:train-stop/hr-train-stop-north-light-2": { + "frame": { "x": 5425, "y": 378, "w": 16, "h": 9 }, + "sourceSize": { "w": 16, "h": 9 } + }, + "entity:train-stop/hr-train-stop-north-red-light-2": { + "frame": { "x": 5443, "y": 378, "w": 16, "h": 9 }, + "sourceSize": { "w": 16, "h": 9 } + }, + "entity:pumpjack/pumpjack-radius-visualization": { + "frame": { "x": 5757, "y": 550, "w": 12, "h": 12 }, + "sourceSize": { "w": 12, "h": 12 } + }, + "entity:small-electric-pole/electric-pole-radius-visualization": { + "frame": { "x": 5658, "y": 856, "w": 12, "h": 12 }, + "sourceSize": { "w": 12, "h": 12 } + }, + "entity:flamethrower-turret/flamethrower-turret-led-indicator-west": { + "frame": { "x": 5461, "y": 378, "w": 20, "h": 6 }, + "sourceSize": { "w": 20, "h": 6 } + }, + "entity:flamethrower-turret/flamethrower-turret-led-indicator-east": { + "frame": { "x": 5483, "y": 378, "w": 20, "h": 6 }, + "sourceSize": { "w": 20, "h": 6 } + }, + "entity:train-stop/hr-train-stop-west-light-2": { + "frame": { "x": 5753, "y": 1039, "w": 7, "h": 15 }, + "sourceSize": { "w": 7, "h": 15 } + }, + "entity:train-stop/hr-train-stop-west-red-light-2": { + "frame": { "x": 5762, "y": 1039, "w": 7, "h": 15 }, + "sourceSize": { "w": 7, "h": 15 } + }, + "entity:train-stop/hr-train-stop-east-red-light-2": { + "frame": { "x": 5763, "y": 647, "w": 6, "h": 16 }, + "sourceSize": { "w": 6, "h": 16 } + }, + "entity:train-stop/hr-train-stop-east-light-2": { + "frame": { "x": 5763, "y": 665, "w": 6, "h": 16 }, + "sourceSize": { "w": 6, "h": 16 } + }, + "entity:train-stop/hr-train-stop-east-light-1": { + "frame": { "x": 5763, "y": 683, "w": 6, "h": 16 }, + "sourceSize": { "w": 6, "h": 16 } + }, + "entity:train-stop/hr-train-stop-west-red-light-1": { + "frame": { "x": 5763, "y": 701, "w": 6, "h": 16 }, + "sourceSize": { "w": 6, "h": 16 } + }, + "entity:beacon/beacon-radius-visualization": { + "frame": { "x": 5483, "y": 633, "w": 10, "h": 10 }, + "sourceSize": { "w": 10, "h": 10 } + }, + "entity:train-stop/hr-train-stop-west-light-1": { + "frame": { "x": 5763, "y": 719, "w": 6, "h": 16 }, + "sourceSize": { "w": 6, "h": 16 } + }, + "entity:train-stop/hr-train-stop-east-red-light-1": { + "frame": { "x": 5763, "y": 737, "w": 6, "h": 16 }, + "sourceSize": { "w": 6, "h": 16 } + }, + "entity:flamethrower-turret/flamethrower-turret-led-indicator-north": { + "frame": { "x": 5495, "y": 633, "w": 10, "h": 9 }, + "sourceSize": { "w": 10, "h": 9 } + }, + "entity:train-stop/hr-train-stop-south-light-2": { + "frame": { "x": 5505, "y": 378, "w": 16, "h": 5 }, + "sourceSize": { "w": 16, "h": 5 } + }, + "entity:train-stop/hr-train-stop-south-red-light-2": { + "frame": { "x": 5523, "y": 378, "w": 16, "h": 5 }, + "sourceSize": { "w": 16, "h": 5 } + }, + "entity:flamethrower-turret/flamethrower-turret-led-indicator-south": { + "frame": { "x": 5507, "y": 633, "w": 10, "h": 8 }, + "sourceSize": { "w": 10, "h": 8 } + }, + "entity:train-stop/hr-train-stop-south-light-1": { + "frame": { "x": 5541, "y": 378, "w": 16, "h": 4 }, + "sourceSize": { "w": 16, "h": 4 } + }, + "entity:train-stop/hr-train-stop-south-red-light-1": { + "frame": { "x": 5559, "y": 378, "w": 16, "h": 4 }, + "sourceSize": { "w": 16, "h": 4 } + }, + "entity:power-switch/power-switch-led": { + "frame": { "x": 5577, "y": 378, "w": 6, "h": 3 }, + "sourceSize": { "w": 6, "h": 3 } + }, + "entity:electric-mining-drill/electric-mining-drill-radius-visualization": { + "frame": { "x": 5765, "y": 311, "w": 2, "h": 2 }, + "sourceSize": { "w": 2, "h": 2 } + } + + }, + "meta": { "image": "entitySprites.png" } +} diff --git a/src/spritesheets/entitySpritesheet.png b/src/spritesheets/entitySpritesheet.png new file mode 100644 index 00000000..e161073a Binary files /dev/null and b/src/spritesheets/entitySpritesheet.png differ diff --git a/src/spritesheets/extra_iconSpritesheet.json b/src/spritesheets/extra_iconSpritesheet.json new file mode 100644 index 00000000..839328b6 --- /dev/null +++ b/src/spritesheets/extra_iconSpritesheet.json @@ -0,0 +1,65 @@ +{ + "frames": { + "extra-icon:cursor-boxes-0": { + "frame": { "x": 0, "y": 182, "w": 63, "h": 63 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:cursor-boxes-1": { + "frame": { "x": 64, "y": 182, "w": 63, "h": 63 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:cursor-boxes-2": { + "frame": { "x": 128, "y": 182, "w": 63, "h": 63 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:cursor-boxes-3": { + "frame": { "x": 192, "y": 182, "w": 63, "h": 63 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:cursor-boxes-4": { + "frame": { "x": 256, "y": 182, "w": 63, "h": 63 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:cursor-boxes": { + "frame": { "x": 0, "y": 182, "w": 320, "h": 320 }, + "sourceSize": { "w": 320, "h": 320 } + }, + "extra-icon:cursor-boxes-32x32-0": { + "frame": { "x": 0, "y": 0, "w": 63, "h": 63 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:cursor-boxes-32x32": { + "frame": { "x": 0, "y": 0, "w": 320, "h": 64 }, + "sourceSize": { "w": 320, "h": 64 } + }, + "extra-icon:electricity-icon-unplugged": { + "frame": { "x": 66, "y": 116, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:entity-info-dark-background": { + "frame": { "x": 262, "y": 116, "w": 53, "h": 53 }, + "sourceSize": { "w": 53, "h": 53 } + }, + "extra-icon:fluid-indication-arrow": { + "frame": { "x": 0, "y": 66, "w": 48, "h": 48 }, + "sourceSize": { "w": 48, "h": 48 } + }, + "extra-icon:fluid-indication-arrow-both-ways": { + "frame": { "x": 50, "y": 66, "w": 48, "h": 48 }, + "sourceSize": { "w": 48, "h": 48 } + }, + "extra-icon:indication-arrow": { + "frame": { "x": 0, "y": 116, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:underground-lines-0": { + "frame": { "x": 132, "y": 116, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "extra-icon:underground-lines-1": { + "frame": { "x": 196, "y": 116, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + } + }, + "meta": { "image": "extra_iconSprites.png" } +} diff --git a/src/spritesheets/extra_iconSpritesheet.png b/src/spritesheets/extra_iconSpritesheet.png new file mode 100644 index 00000000..0555529d Binary files /dev/null and b/src/spritesheets/extra_iconSpritesheet.png differ diff --git a/src/spritesheets/iconSpritesheet.json b/src/spritesheets/iconSpritesheet.json new file mode 100644 index 00000000..29241b26 --- /dev/null +++ b/src/spritesheets/iconSpritesheet.json @@ -0,0 +1,1110 @@ +{ + "frames": { + "icon:item-group/logistics": { + "frame": { "x": 1, "y": 1, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "icon:item-group/production": { + "frame": { "x": 67, "y": 1, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "icon:item-group/intermediate-products": { + "frame": { "x": 1, "y": 67, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "icon:item-group/military": { + "frame": { "x": 67, "y": 67, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "icon:item-group/fluids": { + "frame": { "x": 133, "y": 1, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "icon:item-group/signals": { + "frame": { "x": 133, "y": 67, "w": 64, "h": 64 }, + "sourceSize": { "w": 64, "h": 64 } + }, + "icon:icons/flying-robot-frame": { + "frame": { "x": 1, "y": 133, "w": 37, "h": 34 }, + "sourceSize": { "w": 37, "h": 34 } + }, + "icon:icons/wooden-chest": { + "frame": { "x": 40, "y": 133, "w": 32, "h": 34 }, + "sourceSize": { "w": 32, "h": 34 } + }, + "icon:icons/iron-chest": { + "frame": { "x": 74, "y": 133, "w": 33, "h": 32 }, + "sourceSize": { "w": 33, "h": 32 } + }, + "icon:icons/fast-underground-belt": { + "frame": { "x": 109, "y": 133, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/express-underground-belt": { + "frame": { "x": 143, "y": 133, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/splitter": { + "frame": { "x": 199, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/fast-splitter": { + "frame": { "x": 199, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/express-splitter": { + "frame": { "x": 199, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/burner-inserter": { + "frame": { "x": 199, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/inserter": { + "frame": { "x": 1, "y": 169, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/long-handed-inserter": { + "frame": { "x": 35, "y": 169, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/fast-inserter": { + "frame": { "x": 69, "y": 169, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/filter-inserter": { + "frame": { "x": 103, "y": 169, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/stack-inserter": { + "frame": { "x": 137, "y": 169, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/stack-filter-inserter": { + "frame": { "x": 171, "y": 169, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/small-electric-pole": { + "frame": { "x": 233, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/medium-electric-pole": { + "frame": { "x": 233, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/big-electric-pole": { + "frame": { "x": 233, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/substation": { + "frame": { "x": 233, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/pipe": { + "frame": { "x": 233, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/pipe-to-ground": { + "frame": { "x": 1, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/pump": { + "frame": { "x": 35, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rail": { + "frame": { "x": 69, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/train-stop": { + "frame": { "x": 103, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rail-signal": { + "frame": { "x": 137, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rail-chain-signal": { + "frame": { "x": 171, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/diesel-locomotive": { + "frame": { "x": 205, "y": 203, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/cargo-wagon": { + "frame": { "x": 267, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/fluid-wagon": { + "frame": { "x": 267, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/artillery-wagon": { + "frame": { "x": 267, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/car": { + "frame": { "x": 267, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/tank": { + "frame": { "x": 267, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/logistic-robot": { + "frame": { "x": 267, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/construction-robot": { + "frame": { "x": 1, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/logistic-chest-active-provider": { + "frame": { "x": 35, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/logistic-chest-passive-provider": { + "frame": { "x": 69, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/logistic-chest-storage": { + "frame": { "x": 103, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/logistic-chest-buffer": { + "frame": { "x": 137, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/logistic-chest-requester": { + "frame": { "x": 171, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/roboport": { + "frame": { "x": 205, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/small-lamp": { + "frame": { "x": 239, "y": 237, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/red-wire": { + "frame": { "x": 301, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/green-wire": { + "frame": { "x": 301, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/arithmetic-combinator": { + "frame": { "x": 301, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/decider-combinator": { + "frame": { "x": 301, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/constant-combinator": { + "frame": { "x": 301, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/power-switch": { + "frame": { "x": 301, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/programmable-speaker": { + "frame": { "x": 301, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/stone-brick": { + "frame": { "x": 1, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/concrete": { + "frame": { "x": 35, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/hazard-concrete": { + "frame": { "x": 69, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/refined-concrete": { + "frame": { "x": 103, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/refined-hazard-concrete": { + "frame": { "x": 137, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/landfill": { + "frame": { "x": 171, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/cliff-explosives": { + "frame": { "x": 205, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_black": { + "frame": { "x": 239, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/iron-axe": { + "frame": { "x": 273, "y": 271, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/steel-axe": { + "frame": { "x": 335, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/repair-pack": { + "frame": { "x": 335, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/blueprint": { + "frame": { "x": 335, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/deconstruction-planner": { + "frame": { "x": 335, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/blueprint-book": { + "frame": { "x": 335, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/boiler": { + "frame": { "x": 335, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/steam-engine": { + "frame": { "x": 335, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/steam-turbine": { + "frame": { "x": 335, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/solar-panel": { + "frame": { "x": 1, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/accumulator": { + "frame": { "x": 35, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/nuclear-reactor": { + "frame": { "x": 69, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/heat-boiler": { + "frame": { "x": 103, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/heat-pipe": { + "frame": { "x": 137, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/burner-mining-drill": { + "frame": { "x": 171, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/electric-mining-drill": { + "frame": { "x": 205, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/offshore-pump": { + "frame": { "x": 239, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/pumpjack": { + "frame": { "x": 273, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/stone-furnace": { + "frame": { "x": 307, "y": 305, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/steel-furnace": { + "frame": { "x": 369, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/electric-furnace": { + "frame": { "x": 369, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/assembling-machine-1": { + "frame": { "x": 369, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/assembling-machine-2": { + "frame": { "x": 369, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/assembling-machine-3": { + "frame": { "x": 369, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/oil-refinery": { + "frame": { "x": 369, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/chemical-plant": { + "frame": { "x": 369, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/centrifuge": { + "frame": { "x": 369, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/lab": { + "frame": { "x": 369, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/beacon": { + "frame": { "x": 1, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/speed-module": { + "frame": { "x": 35, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/speed-module-2": { + "frame": { "x": 69, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/speed-module-3": { + "frame": { "x": 103, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/effectivity-module": { + "frame": { "x": 137, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/effectivity-module-2": { + "frame": { "x": 171, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/effectivity-module-3": { + "frame": { "x": 205, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/productivity-module": { + "frame": { "x": 239, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/productivity-module-2": { + "frame": { "x": 273, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/productivity-module-3": { + "frame": { "x": 307, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/steel-chest": { + "frame": { "x": 341, "y": 339, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/basic-oil-processing": { + "frame": { "x": 403, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/advanced-oil-processing": { + "frame": { "x": 403, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/coal-liquefaction": { + "frame": { "x": 403, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/heavy-oil-cracking": { + "frame": { "x": 403, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/light-oil-cracking": { + "frame": { "x": 403, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/solid-fuel-from-light-oil": { + "frame": { "x": 403, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/solid-fuel-from-petroleum-gas": { + "frame": { "x": 403, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/solid-fuel-from-heavy-oil": { + "frame": { "x": 403, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/raw-wood": { + "frame": { "x": 403, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/coal": { + "frame": { "x": 403, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/stone": { + "frame": { "x": 1, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/iron-ore": { + "frame": { "x": 35, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/copper-ore": { + "frame": { "x": 69, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-ore": { + "frame": { "x": 103, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/fish": { + "frame": { "x": 137, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/wood": { + "frame": { "x": 171, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/iron-plate": { + "frame": { "x": 205, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/copper-plate": { + "frame": { "x": 239, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/solid-fuel": { + "frame": { "x": 273, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/steel-plate": { + "frame": { "x": 307, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/plastic-bar": { + "frame": { "x": 341, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/sulfur": { + "frame": { "x": 375, "y": 373, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/battery": { + "frame": { "x": 437, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/explosives": { + "frame": { "x": 437, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-processing": { + "frame": { "x": 437, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/empty-barrel": { + "frame": { "x": 437, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-side-mask": { + "frame": { "x": 437, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-hoop-top-mask": { + "frame": { "x": 437, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-fill": { + "frame": { "x": 437, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-fill-side-mask": { + "frame": { "x": 437, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-fill-top-mask": { + "frame": { "x": 437, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/crude-oil": { + "frame": { "x": 437, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/heavy-oil": { + "frame": { "x": 437, "y": 341, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/light-oil": { + "frame": { "x": 1, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/lubricant": { + "frame": { "x": 35, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/petroleum-gas": { + "frame": { "x": 69, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/sulfuric-acid": { + "frame": { "x": 103, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/storage-tank": { + "frame": { "x": 137, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-empty": { + "frame": { "x": 171, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-empty-side-mask": { + "frame": { "x": 205, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:barreling/barrel-empty-top-mask": { + "frame": { "x": 239, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/copper-cable": { + "frame": { "x": 273, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/iron-stick": { + "frame": { "x": 307, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/iron-gear-wheel": { + "frame": { "x": 341, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/electronic-circuit": { + "frame": { "x": 375, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/advanced-circuit": { + "frame": { "x": 409, "y": 407, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/processing-unit": { + "frame": { "x": 471, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/engine-unit": { + "frame": { "x": 471, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/electric-engine-unit": { + "frame": { "x": 471, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/transport-belt": { + "frame": { "x": 471, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/satellite": { + "frame": { "x": 471, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rocket-control-unit": { + "frame": { "x": 471, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rocket-structure": { + "frame": { "x": 471, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rocket-fuel": { + "frame": { "x": 471, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/nuclear-fuel": { + "frame": { "x": 471, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-235": { + "frame": { "x": 471, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-238": { + "frame": { "x": 471, "y": 341, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-fuel-cell": { + "frame": { "x": 471, "y": 375, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/nuclear-fuel-reprocessing": { + "frame": { "x": 1, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/kovarex-enrichment-process": { + "frame": { "x": 35, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/used-up-uranium-fuel-cell": { + "frame": { "x": 69, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/science-pack-1": { + "frame": { "x": 103, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/science-pack-2": { + "frame": { "x": 137, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/science-pack-3": { + "frame": { "x": 171, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/military-science-pack": { + "frame": { "x": 205, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/production-science-pack": { + "frame": { "x": 239, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/high-tech-science-pack": { + "frame": { "x": 273, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/space-science-pack": { + "frame": { "x": 307, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/fast-transport-belt": { + "frame": { "x": 341, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/pistol": { + "frame": { "x": 375, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/submachine-gun": { + "frame": { "x": 409, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/shotgun": { + "frame": { "x": 443, "y": 441, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/combat-shotgun": { + "frame": { "x": 505, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rocket-launcher": { + "frame": { "x": 505, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/flamethrower": { + "frame": { "x": 505, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/land-mine": { + "frame": { "x": 505, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/firearm-magazine": { + "frame": { "x": 505, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/piercing-rounds-magazine": { + "frame": { "x": 505, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-rounds-magazine": { + "frame": { "x": 505, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/shotgun-shell": { + "frame": { "x": 505, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/piercing-shotgun-shell": { + "frame": { "x": 505, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/cannon-shell": { + "frame": { "x": 505, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/explosive-cannon-shell": { + "frame": { "x": 505, "y": 341, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/uranium-cannon-shell": { + "frame": { "x": 505, "y": 375, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/explosive-uranium-cannon-shell": { + "frame": { "x": 505, "y": 409, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/artillery-shell": { + "frame": { "x": 1, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rocket": { + "frame": { "x": 35, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/explosive-rocket": { + "frame": { "x": 69, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/atomic-bomb": { + "frame": { "x": 103, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/flamethrower-ammo": { + "frame": { "x": 137, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/grenade": { + "frame": { "x": 171, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/cluster-grenade": { + "frame": { "x": 205, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/poison-capsule": { + "frame": { "x": 239, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/slowdown-capsule": { + "frame": { "x": 273, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/defender": { + "frame": { "x": 307, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/distractor": { + "frame": { "x": 341, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/destroyer": { + "frame": { "x": 375, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:equipment/discharge-defense-equipment-ability": { + "frame": { "x": 409, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/artillery-targeting-remote": { + "frame": { "x": 443, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/light-armor": { + "frame": { "x": 477, "y": 475, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/heavy-armor": { + "frame": { "x": 539, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/modular-armor": { + "frame": { "x": 539, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/power-armor": { + "frame": { "x": 539, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/power-armor-mk2": { + "frame": { "x": 539, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/solar-panel-equipment": { + "frame": { "x": 539, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/fusion-reactor-equipment": { + "frame": { "x": 539, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/energy-shield-equipment": { + "frame": { "x": 539, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/energy-shield-mk2-equipment": { + "frame": { "x": 539, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/battery-equipment": { + "frame": { "x": 539, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/battery-mk2-equipment": { + "frame": { "x": 539, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/personal-laser-defense-equipment": { + "frame": { "x": 539, "y": 341, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/discharge-defense-equipment": { + "frame": { "x": 539, "y": 375, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/exoskeleton-equipment": { + "frame": { "x": 539, "y": 409, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/personal-roboport-equipment": { + "frame": { "x": 539, "y": 443, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/personal-roboport-mk2-equipment": { + "frame": { "x": 1, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/night-vision-equipment": { + "frame": { "x": 35, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/stone-wall": { + "frame": { "x": 69, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/gate": { + "frame": { "x": 103, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/gun-turret": { + "frame": { "x": 137, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/laser-turret": { + "frame": { "x": 171, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/flamethrower-turret": { + "frame": { "x": 205, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/artillery-turret": { + "frame": { "x": 239, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/radar": { + "frame": { "x": 273, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/rocket-silo": { + "frame": { "x": 307, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/express-transport-belt": { + "frame": { "x": 341, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/steam": { + "frame": { "x": 375, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:icons/underground-belt": { + "frame": { "x": 409, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_everything": { + "frame": { "x": 443, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_anything": { + "frame": { "x": 477, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_each": { + "frame": { "x": 511, "y": 509, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_0": { + "frame": { "x": 573, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_1": { + "frame": { "x": 573, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_2": { + "frame": { "x": 573, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_3": { + "frame": { "x": 573, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_4": { + "frame": { "x": 573, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_5": { + "frame": { "x": 573, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_6": { + "frame": { "x": 573, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_7": { + "frame": { "x": 573, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_8": { + "frame": { "x": 573, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_9": { + "frame": { "x": 573, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_A": { + "frame": { "x": 573, "y": 341, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_B": { + "frame": { "x": 573, "y": 375, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_C": { + "frame": { "x": 573, "y": 409, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_D": { + "frame": { "x": 573, "y": 443, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_E": { + "frame": { "x": 573, "y": 477, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_F": { + "frame": { "x": 1, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_G": { + "frame": { "x": 35, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_H": { + "frame": { "x": 69, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_I": { + "frame": { "x": 103, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_J": { + "frame": { "x": 137, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_K": { + "frame": { "x": 171, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_L": { + "frame": { "x": 205, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_M": { + "frame": { "x": 239, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_N": { + "frame": { "x": 273, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_O": { + "frame": { "x": 307, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_P": { + "frame": { "x": 341, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_Q": { + "frame": { "x": 375, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_R": { + "frame": { "x": 409, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_S": { + "frame": { "x": 443, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_T": { + "frame": { "x": 477, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_U": { + "frame": { "x": 511, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_V": { + "frame": { "x": 545, "y": 543, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_W": { + "frame": { "x": 607, "y": 1, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_X": { + "frame": { "x": 607, "y": 35, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_Y": { + "frame": { "x": 607, "y": 69, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_Z": { + "frame": { "x": 607, "y": 103, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_red": { + "frame": { "x": 607, "y": 137, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_green": { + "frame": { "x": 607, "y": 171, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_blue": { + "frame": { "x": 607, "y": 205, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_yellow": { + "frame": { "x": 607, "y": 239, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_pink": { + "frame": { "x": 607, "y": 273, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_cyan": { + "frame": { "x": 607, "y": 307, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_white": { + "frame": { "x": 607, "y": 341, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:signal/signal_grey": { + "frame": { "x": 607, "y": 375, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + }, + "icon:fluid/water": { + "frame": { "x": 607, "y": 409, "w": 32, "h": 32 }, + "sourceSize": { "w": 32, "h": 32 } + } + + }, + "meta": { "image": "iconSprites.png" } +} diff --git a/src/spritesheets/iconSpritesheet.png b/src/spritesheets/iconSpritesheet.png new file mode 100644 index 00000000..ed07a5ef Binary files /dev/null and b/src/spritesheets/iconSpritesheet.png differ diff --git a/src/updateGroups.ts b/src/updateGroups.ts new file mode 100644 index 00000000..ca0bc61d --- /dev/null +++ b/src/updateGroups.ts @@ -0,0 +1,86 @@ +import factorioData from './factorio-data/factorioData' + +const updateGroups = [ + { + is: [ + 'transport-belt', + 'fast-transport-belt', + 'express-transport-belt', + 'splitter', + 'fast-splitter', + 'express-splitter', + 'underground-belt', + 'fast-underground-belt', + 'express-underground-belt' + ], + updates: [ + 'transport-belt', + 'fast-transport-belt', + 'express-transport-belt' + ] + }, + { + is: [ + 'heat-pipe', + 'nuclear-reactor', + 'heat-exchanger' + ], + updates: [ + 'heat-pipe', + 'nuclear-reactor', + 'heat-exchanger' + ] + }, + { + has: [ + 'fluid_box', + 'output_fluid_box', + 'fluid_boxes' + ], + updates: [ + 'fluid_box', + 'output_fluid_box', + 'fluid_boxes' + ] + }, + { + is: [ + 'stone-wall', + 'gate', + 'straight-rail' + ], + updates: [ + 'stone-wall', + 'gate', + 'straight-rail' + ] + } +] + +for (const updateGroup of updateGroups) { + if (updateGroup.has) { + const is = [] + const updates = [] + for (let j = 0; j < updateGroup.has.length; j++) { + const ed = factorioData.getEntities() + for (const k in ed) { + if (ed[k][updateGroup.has[j]]) { + is.push(k) + } + } + for (const k in ed) { + if (ed[k][updateGroup.updates[j]]) { + updates.push(k) + } + } + } + + delete updateGroup.has + updateGroup.is = is + updateGroup.updates = updates + } +} + +export { + updateGroups +} diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 00000000..4c390f43 --- /dev/null +++ b/src/util.ts @@ -0,0 +1,157 @@ +function duplicate(obj: any) { + return JSON.parse(JSON.stringify(obj)) +} + +function set_shift(shift: any, tab: any) { + tab.shift = shift + if (tab.hr_version) { + tab.hr_version.shift = shift + } + return tab +} + +function add_to_shift(shift: any, tab: any) { + const SHIFT = shift.constructor === Object ? [shift.x, shift.y] : shift + + tab.shift = tab.shift ? [SHIFT[0] + tab.shift[0], SHIFT[1] + tab.shift[1]] : SHIFT + if (tab.hr_version) { + tab.hr_version.shift = tab.hr_version.shift ? + [SHIFT[0] + tab.hr_version.shift[0], SHIFT[1] + tab.hr_version.shift[1]] : + SHIFT + } + return tab +} + +function set_property(img: any, key: string, val: any) { + img[key] = val + if (img.hr_version) { + img.hr_version[key] = val + } + return img +} + +function set_property_using(img: any, key: any, key2: any, mult = 1) { + if (key2) { + img[key] = img[key2] * mult + if (img.hr_version) { + img.hr_version[key] = img.hr_version[key2] * mult + } + } + return img +} + +function duplicateAndSetPropertyUsing(img: any, key: any, key2: any, mult: number) { + return set_property_using(this.duplicate(img), key, key2, mult) +} + +function getRandomInt(min: number, max: number) { + const MIN = Math.ceil(min) + const MAX = Math.floor(max) + return Math.floor(Math.random() * (MAX - MIN)) + MIN +} + +function rotatePointBasedOnDir(p: any, dir: number) { + const point: IPoint = {x: 0, y: 0} + const nP = p instanceof Array ? { x: p[0], y: p[1] } : { ...p } + switch (dir) { + case 0: + // x y + point.x = nP.x + point.y = nP.y + break + case 2: + // -y x + point.x = nP.y * -1 + point.y = nP.x + break + case 4: + // -x -y + point.x = nP.x * -1 + point.y = nP.y * -1 + break + case 6: + // y -x + point.x = nP.y + point.y = nP.x * -1 + } + + // if (retArray) return [point.x, point.y] + return point +} + +function transformConnectionPosition(position: IPoint, direction: number) { + const dir = Math.abs(position.x) > Math.abs(position.y) ? + (Math.sign(position.x) === 1 ? 2 : 6) : + (Math.sign(position.y) === 1 ? 4 : 0) + switch (dir) { + case 0: position.y += 1; break + case 2: position.x -= 1; break + case 4: position.y -= 1; break + case 6: position.x += 1 + } + return rotatePointBasedOnDir(position, direction) +} + +function switchSizeBasedOnDirection(defaultSize: { width: any; height: any }, direction: number) { + if (defaultSize.width !== defaultSize.height && (direction === 2 || direction === 6)) { + return { x: defaultSize.height, y: defaultSize.width } + } + return { x: defaultSize.width, y: defaultSize.height } +} + +function findBPString(data: string) { + const DATA = data.replace(/\s/g, '') + + if (DATA[0] === '0') return new Promise(resolve => resolve(DATA)) + + // function isUrl(url: string) { + // try { return Boolean(new URL(url)) } + // catch (e) { return false } + // } + + return new Promise(resolve => resolve(new URL(DATA))).then((url: URL) => { + console.log(`Loading data from: ${url}`) + const pathParts = url.pathname.slice(1).split('/') + switch (url.hostname.split('.')[0]) { + case 'pastebin': + case 'hastebin': + return fetchData(`${url.hostname}/raw/${pathParts[0]}`).then(r => r.text()) + case 'gist': + return fetchData(`api.github.com/gists/${pathParts[1]}`).then(r => + r.json().then(data => data.files[Object.keys(data.files)[0]].content) + ) + case 'gitlab': + return fetchData(`${url}/raw`).then(r => r.text()) + case 'factorioprints': + return fetchData(`facorio-blueprints.firebaseio.com/blueprints/${pathParts[1]}.json`).then(r => + r.json().then(data => data.blueprintString) + ) + case 'docs': + return fetchData(`${url.toString().replace('/edit', '')}/export?format=txt`).then(r => r.text()) + default: + return fetchData(url.toString()).then(r => r.text()) + } + // TODO: maybe add dropbox support https://www.dropbox.com/s/ID?raw=1 + }) + + function fetchData(url: string) { + return fetch('https://allorigins.me/get?method=raw&url=' + url).then(response => { + if (response.ok) return response + throw new Error('Network response was not ok.') + }) + } +} + +export default { + findBPString, + duplicate, + set_shift, + set_property, + set_property_using, + add_to_shift, + getRandomInt, + duplicateAndSetPropertyUsing, + rotatePointBasedOnDir, + transformConnectionPosition, + switchSizeBasedOnDirection +} diff --git a/src/zoomPan.ts b/src/zoomPan.ts new file mode 100644 index 00000000..d192ac52 --- /dev/null +++ b/src/zoomPan.ts @@ -0,0 +1,189 @@ +import * as PIXI from 'pixi.js' + +export class ZoomPan { + + private container: PIXI.Container + private size: any + private viewPortPosition: any + private viewPortSize: any + private maxZoom: number + private dirty: boolean + private positionX: number + private positionY: number + private scaleX: number + private scaleY: number + private scaleCenterX: number + private scaleCenterY: number + private origTransform: PIXI.Matrix + private transform: PIXI.Matrix + + constructor(container: PIXI.Container, size: any, viewPortPosition: any, viewPortSize: any, maxZoom: number) { + this.container = container + + this.size = size + this.viewPortPosition = viewPortPosition + this.viewPortSize = viewPortSize + this.maxZoom = maxZoom + + this.dirty = true + + this.positionX = 0 + this.positionY = 0 + + this.scaleX = 1 + this.scaleY = 1 + + this.scaleCenterX = 0 + this.scaleCenterY = 0 + + this.origTransform = new PIXI.Matrix() + + this.transform = new PIXI.Matrix() + } + + updateTransform() { + const t = this.getTransform() + this.container.setTransform(t.tx, t.ty, t.a, t.d) + } + + _updateMatrix() { + // Accumulate zoom transformations. + // origTransform is an intermediate accumulative matrix used for tracking the current zoom target. + this.origTransform.append(new PIXI.Matrix(1, 0, 0, 1, this.scaleCenterX, this.scaleCenterY)) + this.origTransform.append(new PIXI.Matrix(this.scaleX, 0, 0, this.scaleY, 0, 0)) + this.origTransform.append(new PIXI.Matrix(1, 0, 0, 1, -this.scaleCenterX, -this.scaleCenterY)) + + // We reset Scale because origTransform is accumulative and has "captured" the information. + this.scaleX = 1 + this.scaleY = 1 + + // Tack on translation. Note: we don't append it, but concat it into a separate matrix. + // We want to leave origTransform solely responsible for zooming. + // "transform" is the final matrix. + this.transform = this.origTransform.clone() + + // UpperLeft Corner constraints + const minX = this.viewPortPosition.x - this.transform.tx + const minY = this.viewPortPosition.y - this.transform.ty + // LowerRight Corner constraints + const maxX = -(this.size.width * this.transform.a - this.viewPortSize.width) - this.transform.tx + const maxY = -(this.size.height * this.transform.a - this.viewPortSize.height) - this.transform.ty + + // Check if viewport area is bigger than the container + if (maxX - minX > 0 || maxY - minY > 0) { + this.origTransform = new PIXI.Matrix() + + this.scaleCenterX = this.size.width / 2 + this.scaleCenterY = this.size.height / 2 + + const maxZoom = Math.max( + this.viewPortSize.width / (this.size.width * this.transform.a), + this.viewPortSize.height / (this.size.height * this.transform.a) + ) * this.transform.a + this.scaleX = maxZoom + this.scaleY = maxZoom + + this._updateMatrix() + + return + } + + if (this.positionX > minX) this.positionX = minX + if (this.positionY > minY) this.positionY = minY + if (this.positionX < maxX) this.positionX = maxX + if (this.positionY < maxY) this.positionY = maxY + + this.transform.translate(this.positionX, this.positionY) + } + + centerViewPort(focusObjectSize: IPoint, offset: IPoint) { + this.origTransform = new PIXI.Matrix() + + this.positionX = this.viewPortPosition.x - (this.size.width / 2) + + (this.viewPortSize.width - this.viewPortPosition.x) / 2 + offset.x + this.positionY = this.viewPortPosition.y - (this.size.height / 2) + + (this.viewPortSize.height - this.viewPortPosition.y) / 2 + offset.y + + this.scaleCenterX = this.size.width / 2 + -offset.x + this.scaleCenterY = this.size.height / 2 + -offset.y + + const zoom = Math.min( + (this.viewPortSize.width - this.viewPortPosition.x) / focusObjectSize.x, + (this.viewPortSize.height - this.viewPortPosition.y) / focusObjectSize.y + ) + this.scaleX = zoom + this.scaleY = zoom + + this.dirty = true + this.updateTransform() + } + + getTransform() { + if (this.dirty) { + this._updateMatrix() + this.dirty = false + } + return this.transform + } + + setViewPortSize(width: number, height: number) { + this.viewPortSize.width = width + this.viewPortSize.height = height + this.dirty = true + } + + setPosition(posX: number, posY: number) { + this.positionX = posX + this.positionY = posY + this.dirty = true + } + + getPositionX() { + return this.positionX + } + + getPositionY() { + return this.positionY + } + + zoomBy(deltaX: number, deltaY: number) { + if (Math.sign(deltaX) === 1 && this.origTransform.a > this.maxZoom) return + this.scaleX += deltaX + this.scaleY += deltaY + this.dirty = true + } + + translateBy(deltaX: number, deltaY: number) { + this.positionX += deltaX + this.positionY += deltaY + this.dirty = true + } + + setCurrentScale(newScale: number) { + if (this.dirty) { + this._updateMatrix() + } + + // We use dimensional analysis to set the scale. Remember we can't + // just set the scale absolutely because origTransform is an accumulating matrix. + // We have to take its current value and compute a new value based + // on the passed in value. + + const scaleFactor = newScale / this.origTransform.a + + this.scaleX = scaleFactor + this.scaleY = scaleFactor + + this.dirty = true + } + + getCurrentScale() { + return this.origTransform.a + } + + setScaleCenter(posX: number, posY: number) { + this.scaleCenterX = posX + this.scaleCenterY = posY + this.dirty = true + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..fea1a0ef --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "lib": [ + "dom", + "es2015", + "es2016", + "es6" + ], + "target": "es6", + "module": "es2015", + "moduleResolution": "node", + "noImplicitAny": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "removeComments": false, + "preserveConstEnums": true, + "sourceMap": true, + "skipLibCheck": true, + "declaration": true, + "alwaysStrict": true + } +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 00000000..9f898da7 --- /dev/null +++ b/tslint.json @@ -0,0 +1,122 @@ +{ + "extends": [ + "tslint:all" + ], + "rules": { + "no-any": false, + "typedef": [ + false, + "call-signature", + "arrow-call-signature", + "parameter", + "arrow-parameter", + "property-declaration", + "member-variable-declaration" + ], + "no-shadowed-variable": [ + false, + { + "class": true, + "enum": true, + "function": true, + "interface": true, + "namespace": true, + "typeAlias": false, + "typeParameter": false + } + ], + + "align": [ + true, + "parameters", + "statements", + "elements", + "members" + ], + "no-default-export": false, + "cyclomatic-complexity": false, + "binary-expression-operand-order": false, + "one-variable-per-declaration": [true, "ignore-for-loop"], + "newline-per-chained-call": false, + "prefer-template": [true, "allow-single-concat"], + "newline-before-return": false, + "no-magic-numbers": false, + "member-ordering": [true, { "order": "statics-first" }], + "arrow-parens": [true, "ban-single-arg-parens"], + "class-name": true, + "comment-format": [true, "check-space"], + "indent": [true, "spaces", 4], + "interface-name": [true, "always-prefix"], + "max-classes-per-file": false, + "max-line-length": [true, 150], + "member-access": false, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-internal-module": true, + "no-trailing-whitespace": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-else", + "check-open-brace", + "check-whitespace" + ], + "ordered-imports": false, + "radix": false, + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "semicolon": [true, "never"], + "no-implicit-dependencies": [true, "dev"], + "triple-equals": true, + "prefer-for-of": true, + "prefer-const": true, + "curly": [true, "ignore-same-line"], + "only-arrow-functions": [true, "allow-named-functions"], + "no-console": false, + "no-string-literal": false, + "forin": false, + "switch-default": false, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never", + "esSpecCompliant": true + } + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "variable-name": [ + true, + "ban-keywords", + "check-format", + "allow-snake-case" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-module", + "check-separator", + "check-rest-spread", + "check-type", + "check-typecast", + "check-type-operator", + "check-preblock" + ] + } +} diff --git a/webpack.common.js b/webpack.common.js new file mode 100644 index 00000000..cb3fd4b7 --- /dev/null +++ b/webpack.common.js @@ -0,0 +1,83 @@ +'use strict' +// https://medium.com/webpack/webpack-4-mode-and-optimization-5423a6bc597a +const path = require('path') +const ExtractTextPlugin = require('extract-text-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const CleanWebpackPlugin = require('clean-webpack-plugin') +const FaviconsWebpackPlugin = require('webapp-webpack-plugin') // favicons-webpack-plugin +const CopyWebpackPlugin = require('copy-webpack-plugin') +const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') + +const extractPlugin = new ExtractTextPlugin({ + filename: '[name].css', + allChunks: true +}) + +const babelLoader = { + loader: 'babel-loader', + options: { + cacheDirectory: true, + presets: [['@babel/preset-env', { useBuiltIns: 'entry' }]] + } +} + +module.exports = { + target: 'web', + entry: { + main: './src/app' + }, + output: { + path: path.resolve(__dirname, './dist'), + filename: '[name].js' + }, + resolve: { + extensions: ['.js', '.json', '.ts'] + }, + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + use: [ + babelLoader + ] + }, + { + test: /\.ts?$/, + exclude: /node_modules/, + use: [ + babelLoader, + { + loader: 'ts-loader', + options: { transpileOnly: true } + } + ] + }, + { + test: /normalize.css/, + use: extractPlugin.extract({ + use: ['css-loader'] + }) + } + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'src/index.html', + hash: true + }), + extractPlugin, + new FaviconsWebpackPlugin({ + logo: './src/logo.png' + }), + // https://github.com/ProvidenceGeeks/website-frontend/pull/142 + new CopyWebpackPlugin([ + { from: 'src/spritesheets', to: 'spritesheets'/*'factorio-data/bundles/[name].[hash].[ext]'*/ } + ]), + new CleanWebpackPlugin(['dist']), + new ForkTsCheckerWebpackPlugin({ + tslint: true, + watch: ['./src'] + }) + ] +} diff --git a/webpack.dev.js b/webpack.dev.js new file mode 100644 index 00000000..7e8023d6 --- /dev/null +++ b/webpack.dev.js @@ -0,0 +1,9 @@ +'use strict' + +const merge = require('webpack-merge') +const common = require('./webpack.common.js') + +module.exports = merge(common, { + mode: 'development' + // devtool: 'inline-source-map' +}) diff --git a/webpack.prod.js b/webpack.prod.js new file mode 100644 index 00000000..5bf29086 --- /dev/null +++ b/webpack.prod.js @@ -0,0 +1,38 @@ +'use strict' + +const merge = require('webpack-merge') +const common = require('./webpack.common.js') +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin +const Visualizer = require('webpack-visualizer-plugin') +//const ClosureCompilerPlugin = require('webpack-closure-compiler') + +// https://webpack.github.io/analyse/ + +module.exports = merge(common, { + mode: 'production', + profile: true, + plugins: [ + new OptimizeCssAssetsPlugin({ + cssProcessorOptions: { discardComments: { removeAll: true } } + }), + new BundleAnalyzerPlugin({ + reportFilename: './stats/report.html', + analyzerMode: 'static', + openAnalyzer: false, + generateStatsFile: true, + statsFilename: './stats/stats.json' + }), + new Visualizer({ + filename: './stats/statistics.html' + }) + // new ClosureCompilerPlugin({ + // compiler: { + // language_in: 'ECMASCRIPT6', + // language_out: 'ECMASCRIPT5', + // compilation_level: 'ADVANCED' + // }, + // jsCompiler: true, + // concurrency: 3, + // }) + ] +})