Merge branch 'beta' into hebrew-pr

This commit is contained in:
Lugiad 2025-02-14 13:47:47 +01:00 committed by GitHub
commit 151eb3faa8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
179 changed files with 26551 additions and 13854 deletions

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
v20.13.1

View File

@ -343,34 +343,39 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
# 💻 Development
## Server Owner/Administrator
## Server Developers
- pancakes aka patapancakes
## Senior Developers
- Walker
- NightKev
- Moka
- Temp aka Tempo-anon
- Madmadness65
## Developers
## Current and former Development Team members
- bennybroseph
- Brain Frog
- CodeTappert
- Dakurei
- flx-sta
- innerthunder
- frutescens
- Greenlamp
- ImperialSympathizer
- innerthunder
- KimJeongSun
- Madmadness65
- Moka
- Navori
- NightKev
- Opaquer
- OrangeRed
- Sam aka Flashfyre (initial developer, started PokéRogue)
- sirzento
- SN34KZ
- Swain aka torranx
## Junior Developers
- KimJeongSun
- ImperialSympathizer
- Temp aka Tempo-anon
- Walker
- Xavion
## Bug/Issue Managers
- Snailman
- Daleks
- Lily
- PigeonBar
- Snailman
## Other Code Contributors
- Admiral-Billy
@ -378,10 +383,7 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- arColm
- Arxalc
- AsdarDevelops
- bennybroseph
- Brain Frog
- Corrade
- Dakurei
- DustinLin
- ElizaAlex
- EmberCM
@ -391,7 +393,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- francktrouillez
- FredeX
- geeilhan
- Greenlamp
- happinyz
- hayuna
- InfernoVulpix
@ -411,7 +412,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- Neverblade
- NxKarim
- okimin
- OrangeRed
- PigeonBar
- PrabbyDD
- prateau
@ -421,10 +421,8 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- RedstonewolfX
- ReneGV
- rnicar245
- Sam aka Flashfyre (initial developer, started PokéRogue)
- schmidtc1
- shayebeadling
- sirzento
- snoozbuster
- sodaMelon
- td76099

View File

@ -5,6 +5,7 @@ import importX from 'eslint-plugin-import-x';
export default [
{
name: "eslint-config",
files: ["src/**/*.{ts,tsx,js,jsx}"],
ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"],
languageOptions: {
@ -48,5 +49,22 @@ export default [
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], // Disallows multiple empty lines
"@typescript-eslint/consistent-type-imports": "error", // Enforces type-only imports wherever possible
}
},
{
name: "eslint-tests",
files: ["src/test/**/**.test.ts"],
languageOptions: {
parser: parser,
parserOptions: {
"project": ["./tsconfig.json"]
}
},
plugins: {
"@typescript-eslint": tseslint
},
rules: {
"@typescript-eslint/no-floating-promises": "error", // Require Promise-like statements to be handled appropriately. - https://typescript-eslint.io/rules/no-floating-promises/
"@typescript-eslint/no-misused-promises": "error", // Disallow Promises in places not designed to handle them. - https://typescript-eslint.io/rules/no-misused-promises/
}
}
]

View File

@ -164,13 +164,13 @@ input:-internal-autofill-selected {
}
/* Show cycle buttons only on STARTER_SELECT and on touch configuration panel */
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadOpenFilters,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleForm,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleShiny,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX'], [data-ui-mode='POKEDEX_PAGE']) #apadOpenFilters,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX'], [data-ui-mode='POKEDEX_PAGE'], [data-ui-mode='RUN_INFO']) #apadCycleForm,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX'], [data-ui-mode='POKEDEX_PAGE'], [data-ui-mode='RUN_INFO']) #apadCycleShiny,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleNature,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleAbility,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleGender,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleVariant {
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX_PAGE'], [data-ui-mode='RUN_INFO']) #apadCycleAbility,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX_PAGE']) #apadCycleGender,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX']) #apadCycleVariant {
display: none;
}

439
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "pokemon-rogue-battle",
"version": "1.5.2",
"version": "1.6.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pokemon-rogue-battle",
"version": "1.5.2",
"version": "1.5.4",
"hasInstallScript": true,
"dependencies": {
"@material/material-color-utilities": "^0.2.7",
@ -28,7 +28,7 @@
"@types/node": "^20.12.13",
"@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54",
"@typescript-eslint/parser": "^8.0.0-alpha.54",
"@vitest/coverage-istanbul": "^2.0.4",
"@vitest/coverage-istanbul": "^2.1.9",
"dependency-cruiser": "^16.3.10",
"eslint": "^9.7.0",
"eslint-plugin-import-x": "^4.2.1",
@ -40,9 +40,9 @@
"typedoc": "^0.26.4",
"typescript": "^5.5.3",
"typescript-eslint": "^8.0.0-alpha.54",
"vite": "^5.4.8",
"vite": "^5.4.14",
"vite-tsconfig-paths": "^4.3.2",
"vitest": "^2.0.4",
"vitest": "^2.1.9",
"vitest-canvas-mock": "^0.3.3"
},
"engines": {
@ -269,9 +269,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.24.8",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"dev": true,
"license": "MIT",
"engines": {
@ -279,9 +279,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"dev": true,
"license": "MIT",
"engines": {
@ -406,11 +406,14 @@
}
},
"node_modules/@babel/parser": {
"version": "7.25.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz",
"integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==",
"version": "7.26.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz",
"integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.26.8"
},
"bin": {
"parser": "bin/babel-parser.js"
},
@ -476,15 +479,14 @@
}
},
"node_modules/@babel/types": {
"version": "7.25.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz",
"integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==",
"version": "7.26.8",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz",
"integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.24.8",
"@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@ -2145,20 +2147,20 @@
}
},
"node_modules/@vitest/coverage-istanbul": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-2.0.4.tgz",
"integrity": "sha512-6VibYMkXh8cJm5Bg8JYeOoR4oURlPf4YKP9kuVRE/NKasfYrXPnzSwuxrpgMbgOfPj13KUJXgMB3VAGukECtlQ==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-2.1.9.tgz",
"integrity": "sha512-vdYE4FkC/y2lxcN3Dcj54Bw+ericmDwiex0B8LV5F/YNYEYP1mgVwhPnHwWGAXu38qizkjOuyczKbFTALfzFKw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@istanbuljs/schema": "^0.1.3",
"debug": "^4.3.5",
"debug": "^4.3.7",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-instrument": "^6.0.3",
"istanbul-lib-report": "^3.0.1",
"istanbul-lib-source-maps": "^5.0.6",
"istanbul-reports": "^3.1.7",
"magicast": "^0.3.4",
"magicast": "^0.3.5",
"test-exclude": "^7.0.1",
"tinyrainbow": "^1.2.0"
},
@ -2166,29 +2168,56 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"vitest": "2.0.4"
"vitest": "2.1.9"
}
},
"node_modules/@vitest/expect": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.4.tgz",
"integrity": "sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz",
"integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/spy": "2.0.4",
"@vitest/utils": "2.0.4",
"chai": "^5.1.1",
"@vitest/spy": "2.1.9",
"@vitest/utils": "2.1.9",
"chai": "^5.1.2",
"tinyrainbow": "^1.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/mocker": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz",
"integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/spy": "2.1.9",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.12"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"msw": "^2.4.9",
"vite": "^5.0.0"
},
"peerDependenciesMeta": {
"msw": {
"optional": true
},
"vite": {
"optional": true
}
}
},
"node_modules/@vitest/pretty-format": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.4.tgz",
"integrity": "sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz",
"integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -2199,13 +2228,13 @@
}
},
"node_modules/@vitest/runner": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.4.tgz",
"integrity": "sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz",
"integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/utils": "2.0.4",
"@vitest/utils": "2.1.9",
"pathe": "^1.1.2"
},
"funding": {
@ -2213,14 +2242,14 @@
}
},
"node_modules/@vitest/snapshot": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.4.tgz",
"integrity": "sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz",
"integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/pretty-format": "2.0.4",
"magic-string": "^0.30.10",
"@vitest/pretty-format": "2.1.9",
"magic-string": "^0.30.12",
"pathe": "^1.1.2"
},
"funding": {
@ -2228,28 +2257,27 @@
}
},
"node_modules/@vitest/spy": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.4.tgz",
"integrity": "sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz",
"integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"tinyspy": "^3.0.0"
"tinyspy": "^3.0.2"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.4.tgz",
"integrity": "sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz",
"integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/pretty-format": "2.0.4",
"estree-walker": "^3.0.3",
"loupe": "^3.1.1",
"@vitest/pretty-format": "2.1.9",
"loupe": "^3.1.2",
"tinyrainbow": "^1.2.0"
},
"funding": {
@ -2545,9 +2573,9 @@
"license": "CC-BY-4.0"
},
"node_modules/chai": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
"integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz",
"integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -2800,13 +2828,13 @@
}
},
"node_modules/debug": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ms": "2.1.2"
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@ -3004,6 +3032,13 @@
"node": ">= 0.4"
}
},
"node_modules/es-module-lexer": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
"integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
"dev": true,
"license": "MIT"
},
"node_modules/esbuild": {
"version": "0.21.5",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
@ -3450,28 +3485,14 @@
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"license": "MIT"
},
"node_modules/execa": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"node_modules/expect-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz",
"integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==",
"dev": true,
"license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
"human-signals": "^5.0.0",
"is-stream": "^3.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^5.1.0",
"onetime": "^6.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^3.0.0"
},
"license": "Apache-2.0",
"engines": {
"node": ">=16.17"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
"node": ">=12.0.0"
}
},
"node_modules/external-editor": {
@ -3695,16 +3716,6 @@
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-func-name": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
"integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
@ -3724,19 +3735,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-stream": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-tsconfig": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz",
@ -3968,16 +3966,6 @@
"node": ">= 14"
}
},
"node_modules/human-signals": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=16.17.0"
}
},
"node_modules/i18next": {
"version": "23.12.2",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.12.2.tgz",
@ -4240,19 +4228,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/is-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
@ -4716,14 +4691,11 @@
"license": "MIT"
},
"node_modules/loupe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
"integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==",
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
"integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
"dev": true,
"license": "MIT",
"dependencies": {
"get-func-name": "^2.0.1"
}
"license": "MIT"
},
"node_modules/lru-cache": {
"version": "5.1.1",
@ -4743,9 +4715,9 @@
"license": "MIT"
},
"node_modules/magic-string": {
"version": "0.30.11",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
"version": "0.30.17",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -4753,14 +4725,14 @@
}
},
"node_modules/magicast": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz",
"integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==",
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
"integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.24.4",
"@babel/types": "^7.24.0",
"@babel/parser": "^7.25.4",
"@babel/types": "^7.25.4",
"source-map-js": "^1.2.0"
}
},
@ -4819,13 +4791,6 @@
"url": "https://github.com/sindresorhus/memoize?sponsor=1"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true,
"license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@ -4886,19 +4851,6 @@
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/mimic-function": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
@ -4959,9 +4911,9 @@
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
"license": "MIT"
},
@ -5138,35 +5090,6 @@
"integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==",
"dev": true
},
"node_modules/npm-run-path": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm-run-path/node_modules/path-key": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/nwsapi": {
"version": "2.2.12",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
@ -5182,22 +5105,6 @@
"node": ">= 0.4"
}
},
"node_modules/onetime": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"mimic-fn": "^4.0.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@ -5978,9 +5885,9 @@
}
},
"node_modules/std-env": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
"integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
"integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==",
"dev": true,
"license": "MIT"
},
@ -6106,19 +6013,6 @@
"node": ">=4"
}
},
"node_modules/strip-final-newline": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@ -6225,16 +6119,23 @@
"license": "MIT"
},
"node_modules/tinybench": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz",
"integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==",
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
"integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
"dev": true,
"license": "MIT"
},
"node_modules/tinyexec": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
"integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
"dev": true,
"license": "MIT"
},
"node_modules/tinypool": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz",
"integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
"integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
"dev": true,
"license": "MIT",
"engines": {
@ -6252,9 +6153,9 @@
}
},
"node_modules/tinyspy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz",
"integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
"integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
"dev": true,
"license": "MIT",
"engines": {
@ -6274,16 +6175,6 @@
"node": ">=0.6.0"
}
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@ -6561,10 +6452,11 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/vite": {
"version": "5.4.8",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
"integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
"version": "5.4.14",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz",
"integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
@ -6620,16 +6512,16 @@
}
},
"node_modules/vite-node": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.4.tgz",
"integrity": "sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz",
"integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==",
"dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
"debug": "^4.3.5",
"debug": "^4.3.7",
"es-module-lexer": "^1.5.4",
"pathe": "^1.1.2",
"tinyrainbow": "^1.2.0",
"vite": "^5.0.0"
},
"bin": {
@ -6663,30 +6555,31 @@
}
},
"node_modules/vitest": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.4.tgz",
"integrity": "sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==",
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz",
"integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.3.0",
"@vitest/expect": "2.0.4",
"@vitest/pretty-format": "^2.0.4",
"@vitest/runner": "2.0.4",
"@vitest/snapshot": "2.0.4",
"@vitest/spy": "2.0.4",
"@vitest/utils": "2.0.4",
"chai": "^5.1.1",
"debug": "^4.3.5",
"execa": "^8.0.1",
"magic-string": "^0.30.10",
"@vitest/expect": "2.1.9",
"@vitest/mocker": "2.1.9",
"@vitest/pretty-format": "^2.1.9",
"@vitest/runner": "2.1.9",
"@vitest/snapshot": "2.1.9",
"@vitest/spy": "2.1.9",
"@vitest/utils": "2.1.9",
"chai": "^5.1.2",
"debug": "^4.3.7",
"expect-type": "^1.1.0",
"magic-string": "^0.30.12",
"pathe": "^1.1.2",
"std-env": "^3.7.0",
"tinybench": "^2.8.0",
"tinypool": "^1.0.0",
"std-env": "^3.8.0",
"tinybench": "^2.9.0",
"tinyexec": "^0.3.1",
"tinypool": "^1.0.1",
"tinyrainbow": "^1.2.0",
"vite": "^5.0.0",
"vite-node": "2.0.4",
"vite-node": "2.1.9",
"why-is-node-running": "^2.3.0"
},
"bin": {
@ -6701,8 +6594,8 @@
"peerDependencies": {
"@edge-runtime/vm": "*",
"@types/node": "^18.0.0 || >=20.0.0",
"@vitest/browser": "2.0.4",
"@vitest/ui": "2.0.4",
"@vitest/browser": "2.1.9",
"@vitest/ui": "2.1.9",
"happy-dom": "*",
"jsdom": "*"
},

View File

@ -1,7 +1,7 @@
{
"name": "pokemon-rogue-battle",
"private": true,
"version": "1.5.2",
"version": "1.6.0",
"type": "module",
"scripts": {
"start": "vite",
@ -33,7 +33,7 @@
"@types/node": "^20.12.13",
"@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54",
"@typescript-eslint/parser": "^8.0.0-alpha.54",
"@vitest/coverage-istanbul": "^2.0.4",
"@vitest/coverage-istanbul": "^2.1.9",
"dependency-cruiser": "^16.3.10",
"eslint": "^9.7.0",
"eslint-plugin-import-x": "^4.2.1",
@ -45,9 +45,9 @@
"typedoc": "^0.26.4",
"typescript": "^5.5.3",
"typescript-eslint": "^8.0.0-alpha.54",
"vite": "^5.4.8",
"vite": "^5.4.14",
"vite-tsconfig-paths": "^4.3.2",
"vitest": "^2.0.4",
"vitest": "^2.1.9",
"vitest-canvas-mock": "^0.3.3"
},
"dependencies": {
@ -64,11 +64,5 @@
},
"engines": {
"node": ">=20.0.0"
},
"imports": {
"#enums/*": "./enums/*",
"#app": "./src/main.js",
"#app/*": "./src/*",
"#test/*": "./src/test/*"
}
}

Binary file not shown.

View File

@ -201,6 +201,8 @@
"6211",
"6215",
"6215",
"6215f",
"6215f",
"65-mega",
"65-mega",
"650",
@ -291,8 +293,8 @@
"666-tundra",
"667",
"667",
"668-female",
"668-female",
"668f",
"668f",
"668",
"668",
"669-blue",
@ -1333,6 +1335,8 @@
"6211b",
"6215b",
"6215b",
"6215bf",
"6215bf",
"65b-mega",
"65b-mega",
"650b",
@ -1423,8 +1427,8 @@
"666b-tundra",
"667b",
"667b",
"668b-female",
"668b-female",
"668bf",
"668bf",
"668b",
"668b",
"669b-blue",
@ -2467,6 +2471,8 @@
"6211sb",
"6215sb",
"6215sb",
"6215sbf",
"6215sbf",
"65sb-mega",
"65sb-mega",
"650sb",
@ -2559,6 +2565,8 @@
"667sb",
"668sb",
"668sb",
"668sbf",
"668sbf",
"669sb-blue",
"669sb-blue",
"669sb-orange",
@ -3604,6 +3612,8 @@
"6211s",
"6215s",
"6215s",
"6215sf",
"6215sf",
"65s-mega",
"65s-mega",
"650s",
@ -3694,8 +3704,8 @@
"666s-tundra",
"667s",
"667s",
"668s-female",
"668s-female",
"668sf",
"668sf",
"668s",
"668s",
"669s-blue",
@ -4587,6 +4597,7 @@
"475-mega_3",
"475-mega_3",
"6215",
"6215f",
"653",
"654",
"6549",
@ -4856,6 +4867,7 @@
"475b-mega_3",
"475b-mega_3",
"6215b",
"6215bf",
"653b",
"654b",
"6549b",

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,19 +1,19 @@
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 0, "y": 0, "w": 77, "h": 77 },
"frame": { "x": 0, "y": 0, "w": 77, "h": 65 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 77 },
"sourceSize": { "w": 77, "h": 77 },
"spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 65 },
"sourceSize": { "w": 77, "h": 65 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.7-x64",
"version": "1.3.9.2-x64",
"format": "I8",
"size": { "w": 77, "h": 77 },
"size": { "w": 77, "h": 65 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 899 B

After

Width:  |  Height:  |  Size: 890 B

View File

@ -1,41 +0,0 @@
{
"textures": [
{
"image": "668-female.png",
"format": "RGBA8888",
"size": {
"w": 74,
"h": 74
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 74,
"h": 72
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 74,
"h": 72
},
"frame": {
"x": 0,
"y": 0,
"w": 74,
"h": 72
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:3b22b1fc8fabd22888048f909287acba:10bec1e42fb1d39868a624d00345818d:d99ed0e84a0695b54e479aa98271aba1$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 791 B

View File

@ -1,11 +1,11 @@
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 0, "y": 0, "w": 77, "h": 77 },
"frame": { "x": 0, "y": 0, "w": 77, "h": 65 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 77 },
"sourceSize": { "w": 77, "h": 77 },
"spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 65 },
"sourceSize": { "w": 77, "h": 65 },
"duration": 100
}
],
@ -13,7 +13,7 @@
"app": "https://www.aseprite.org/",
"version": "1.3.7-x64",
"format": "I8",
"size": { "w": 77, "h": 77 },
"size": { "w": 77, "h": 65 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 899 B

After

Width:  |  Height:  |  Size: 890 B

View File

@ -1,41 +0,0 @@
{
"textures": [
{
"image": "668-female.png",
"format": "RGBA8888",
"size": {
"w": 74,
"h": 74
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 74,
"h": 72
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 74,
"h": 72
},
"frame": {
"x": 0,
"y": 0,
"w": 74,
"h": 72
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:a3f814ea1f5b062df0ecc4e7c343d89b:769178f31dc2505ae0e67b72b1319828:d99ed0e84a0695b54e479aa98271aba1$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 B

View File

@ -1,272 +1,659 @@
{
"textures": [
{
"image": "667.png",
"format": "RGBA8888",
"size": {
"w": 160,
"h": 160
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 46,
"w": 40,
"h": 46
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 92,
"w": 40,
"h": 46
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 40,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 80,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 120,
"y": 0,
"w": 40,
"h": 45
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 120,
"y": 0,
"w": 40,
"h": 45
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 120,
"y": 45,
"w": 40,
"h": 45
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 40,
"y": 90,
"w": 40,
"h": 45
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 40,
"h": 44
},
"frame": {
"x": 40,
"y": 46,
"w": 40,
"h": 44
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 40,
"h": 44
},
"frame": {
"x": 80,
"y": 46,
"w": 40,
"h": 44
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:0c78c1973ebb266716d5a3a4557bca98:3ab4a906b1847f4048e828e5410eae40:02171d511e760c8a3e1b623ad6bf93f5$"
}
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0002.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0003.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0004.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0005.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0006.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0007.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0008.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0009.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0010.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0011.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0012.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0013.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0014.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0015.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0016.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0017.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0018.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0019.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0020.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0021.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0022.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0023.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0024.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0025.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0026.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0027.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0028.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0029.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0030.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0031.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0032.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0033.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0034.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0035.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0036.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0037.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0038.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0039.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0040.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0041.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0042.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0043.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0044.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0045.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0046.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0047.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0048.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0049.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0050.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0051.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0052.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0053.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0054.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0055.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0056.png",
"frame": { "x": 85, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 41, "h": 48 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0057.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0058.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0059.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0060.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0061.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0062.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0063.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0064.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0065.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0066.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0067.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0068.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0069.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0070.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0071.png",
"frame": { "x": 85, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 41, "h": 48 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0072.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"image": "667.png",
"format": "I8",
"size": { "w": 167, "h": 141 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,125 +1,659 @@
{
"textures": [
{
"image": "667.png",
"format": "RGBA8888",
"size": {
"w": 115,
"h": 115
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 39,
"h": 42
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 39,
"h": 42
},
"frame": {
"x": 0,
"y": 0,
"w": 39,
"h": 42
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 39,
"h": 42
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 39,
"h": 42
},
"frame": {
"x": 0,
"y": 42,
"w": 39,
"h": 42
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 39,
"h": 42
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 39,
"h": 41
},
"frame": {
"x": 39,
"y": 0,
"w": 39,
"h": 41
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 39,
"h": 42
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 38,
"h": 42
},
"frame": {
"x": 39,
"y": 41,
"w": 38,
"h": 42
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 39,
"h": 42
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 38,
"h": 42
},
"frame": {
"x": 77,
"y": 41,
"w": 38,
"h": 42
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:0515d906bdf1ec3ad533ac13c4e701ec:195a93073ecc7446c747c2e79ae07d54:02171d511e760c8a3e1b623ad6bf93f5$"
}
}
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0002.png",
"frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0003.png",
"frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0004.png",
"frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0005.png",
"frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0006.png",
"frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0007.png",
"frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0008.png",
"frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0009.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0010.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0011.png",
"frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0012.png",
"frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0013.png",
"frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0014.png",
"frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0015.png",
"frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0016.png",
"frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0017.png",
"frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0018.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0019.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0020.png",
"frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0021.png",
"frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0022.png",
"frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0023.png",
"frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0024.png",
"frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0025.png",
"frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0026.png",
"frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0027.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0028.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0029.png",
"frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0030.png",
"frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0031.png",
"frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0032.png",
"frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0033.png",
"frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0034.png",
"frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0035.png",
"frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0036.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0037.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0038.png",
"frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0039.png",
"frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0040.png",
"frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0041.png",
"frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0042.png",
"frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0043.png",
"frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0044.png",
"frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0045.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0046.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0047.png",
"frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0048.png",
"frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0049.png",
"frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0050.png",
"frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0051.png",
"frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0052.png",
"frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0053.png",
"frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0054.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0055.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0056.png",
"frame": { "x": 85, "y": 0, "w": 41, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 1, "w": 41, "h": 47 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0057.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0058.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0059.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0060.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0061.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0062.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0063.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0064.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0065.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0066.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0067.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0068.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0069.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0070.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 41, "h": 48 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0071.png",
"frame": { "x": 85, "y": 0, "w": 41, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 1, "w": 41, "h": 47 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
},
{
"filename": "0072.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"sourceSize": { "w": 43, "h": 48 },
"duration": 110
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"image": "667.png",
"format": "I8",
"size": { "w": 167, "h": 138 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,146 +1,821 @@
{
"textures": [
{
"image": "668.png",
"format": "RGBA8888",
"size": {
"w": 146,
"h": 146
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
},
"frame": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
},
"frame": {
"x": 73,
"y": 0,
"w": 73,
"h": 61
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
},
"frame": {
"x": 73,
"y": 0,
"w": 73,
"h": 61
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 73,
"h": 60
},
"frame": {
"x": 0,
"y": 61,
"w": 73,
"h": 60
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 73,
"h": 60
},
"frame": {
"x": 0,
"y": 61,
"w": 73,
"h": 60
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 1,
"y": 2,
"w": 72,
"h": 59
},
"frame": {
"x": 73,
"y": 61,
"w": 72,
"h": 59
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:bc67ee0b37e5c8a13762178a52fad862:1ee199920770bc5797feb94424ff9f9a:947bf84d1af493c62e2cef45bb6c19ad$"
}
}
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0002.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0003.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0004.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0005.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0006.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0007.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0008.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0009.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0010.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0011.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0012.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0013.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0014.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0015.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0016.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0017.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0018.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0019.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0020.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0021.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0022.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0023.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0024.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0025.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0026.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0027.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0028.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0029.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0030.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0031.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0032.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0033.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0034.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0035.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0036.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0037.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0038.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0039.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0040.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0041.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0042.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0043.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0044.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0045.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0046.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0047.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0048.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0049.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0050.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0051.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0052.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0053.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0054.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0055.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0056.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0057.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0058.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0059.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0060.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0061.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0062.png",
"frame": { "x": 458, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0063.png",
"frame": { "x": 303, "y": 364, "w": 74, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 74, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0064.png",
"frame": { "x": 227, "y": 294, "w": 75, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0065.png",
"frame": { "x": 378, "y": 364, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 5, "w": 75, "h": 69 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0066.png",
"frame": { "x": 303, "y": 293, "w": 75, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0067.png",
"frame": { "x": 379, "y": 293, "w": 75, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 75, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0068.png",
"frame": { "x": 454, "y": 364, "w": 72, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 8, "y": 3, "w": 72, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0069.png",
"frame": { "x": 70, "y": 365, "w": 68, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 68, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0070.png",
"frame": { "x": 291, "y": 435, "w": 62, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 17, "y": 2, "w": 62, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0071.png",
"frame": { "x": 378, "y": 434, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 15, "y": 2, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0072.png",
"frame": { "x": 224, "y": 365, "w": 66, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 66, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0073.png",
"frame": { "x": 0, "y": 365, "w": 69, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 8, "y": 2, "w": 69, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0074.png",
"frame": { "x": 229, "y": 220, "w": 73, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 1, "w": 73, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0075.png",
"frame": { "x": 468, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0076.png",
"frame": { "x": 308, "y": 147, "w": 74, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 1, "w": 74, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0077.png",
"frame": { "x": 0, "y": 148, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0078.png",
"frame": { "x": 383, "y": 220, "w": 74, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 74, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0079.png",
"frame": { "x": 231, "y": 147, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0080.png",
"frame": { "x": 79, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0081.png",
"frame": { "x": 156, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0082.png",
"frame": { "x": 310, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0083.png",
"frame": { "x": 464, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0084.png",
"frame": { "x": 77, "y": 147, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0085.png",
"frame": { "x": 154, "y": 147, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0086.png",
"frame": { "x": 76, "y": 220, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0087.png",
"frame": { "x": 152, "y": 220, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 76, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0088.png",
"frame": { "x": 0, "y": 221, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0089.png",
"frame": { "x": 0, "y": 293, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0090.png",
"frame": { "x": 75, "y": 293, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"image": "668.png",
"format": "I8",
"size": { "w": 543, "h": 507 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,821 @@
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0002.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0003.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0004.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0005.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0006.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0007.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0008.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0009.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0010.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0011.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0012.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0013.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0014.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0015.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0016.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0017.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0018.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0019.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0020.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0021.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0022.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0023.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0024.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0025.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0026.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0027.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0028.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0029.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0030.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0031.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0032.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0033.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0034.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0035.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0036.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0037.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0038.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0039.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0040.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0041.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0042.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0043.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0044.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0045.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0046.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0047.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0048.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0049.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0050.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0051.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0052.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0053.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0054.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0055.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0056.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0057.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0058.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0059.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0060.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0061.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0062.png",
"frame": { "x": 0, "y": 144, "w": 78, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 3, "w": 78, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0063.png",
"frame": { "x": 233, "y": 213, "w": 78, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 4, "w": 78, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0064.png",
"frame": { "x": 156, "y": 144, "w": 79, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 4, "w": 79, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0065.png",
"frame": { "x": 319, "y": 144, "w": 80, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 9, "y": 5, "w": 80, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0066.png",
"frame": { "x": 242, "y": 73, "w": 80, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 9, "y": 4, "w": 80, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0067.png",
"frame": { "x": 310, "y": 282, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0068.png",
"frame": { "x": 534, "y": 350, "w": 71, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 17, "y": 4, "w": 71, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0069.png",
"frame": { "x": 301, "y": 351, "w": 67, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 21, "y": 3, "w": 67, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0070.png",
"frame": { "x": 0, "y": 353, "w": 63, "h": 75 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 25, "y": 3, "w": 63, "h": 75 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0071.png",
"frame": { "x": 204, "y": 417, "w": 63, "h": 75 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 25, "y": 2, "w": 63, "h": 75 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0072.png",
"frame": { "x": 139, "y": 352, "w": 65, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 23, "y": 3, "w": 65, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0073.png",
"frame": { "x": 73, "y": 352, "w": 66, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 21, "y": 3, "w": 66, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0074.png",
"frame": { "x": 368, "y": 351, "w": 69, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 18, "y": 4, "w": 69, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0075.png",
"frame": { "x": 0, "y": 284, "w": 73, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 15, "y": 4, "w": 73, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0076.png",
"frame": { "x": 475, "y": 214, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0077.png",
"frame": { "x": 319, "y": 212, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0078.png",
"frame": { "x": 82, "y": 73, "w": 80, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 7, "y": 2, "w": 80, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0079.png",
"frame": { "x": 519, "y": 72, "w": 83, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 1, "w": 83, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0080.png",
"frame": { "x": 434, "y": 0, "w": 85, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 0, "w": 85, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0081.png",
"frame": { "x": 261, "y": 0, "w": 86, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 86, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0082.png",
"frame": { "x": 174, "y": 0, "w": 87, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 87, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0083.png",
"frame": { "x": 87, "y": 0, "w": 87, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 87, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0084.png",
"frame": { "x": 0, "y": 0, "w": 87, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 87, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0085.png",
"frame": { "x": 347, "y": 0, "w": 87, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 1, "w": 87, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0086.png",
"frame": { "x": 519, "y": 0, "w": 85, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 1, "w": 85, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0087.png",
"frame": { "x": 347, "y": 72, "w": 84, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 1, "w": 84, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0088.png",
"frame": { "x": 0, "y": 73, "w": 82, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0089.png",
"frame": { "x": 162, "y": 73, "w": 80, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 8, "y": 2, "w": 80, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0090.png",
"frame": { "x": 78, "y": 144, "w": 78, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 3, "w": 78, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"image": "668-female.png",
"format": "I8",
"size": { "w": 605, "h": 492 },
"scale": "1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,146 +1,821 @@
{
"textures": [
{
"image": "668.png",
"format": "RGBA8888",
"size": {
"w": 146,
"h": 146
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
},
"frame": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
},
"frame": {
"x": 73,
"y": 0,
"w": 73,
"h": 61
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 73,
"h": 61
},
"frame": {
"x": 73,
"y": 0,
"w": 73,
"h": 61
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 73,
"h": 60
},
"frame": {
"x": 0,
"y": 61,
"w": 73,
"h": 60
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 73,
"h": 60
},
"frame": {
"x": 0,
"y": 61,
"w": 73,
"h": 60
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 73,
"h": 61
},
"spriteSourceSize": {
"x": 1,
"y": 2,
"w": 72,
"h": 59
},
"frame": {
"x": 73,
"y": 61,
"w": 72,
"h": 59
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:0e20693ecfc704a58db8c8592fcdc9cc:659468d84f3cc98068a3454a7c68f1e4:947bf84d1af493c62e2cef45bb6c19ad$"
}
}
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0002.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0003.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0004.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0005.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0006.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0007.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0008.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0009.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0010.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0011.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0012.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0013.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0014.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0015.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0016.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0017.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0018.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0019.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0020.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0021.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0022.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0023.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0024.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0025.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0026.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0027.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0028.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0029.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0030.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0031.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0032.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0033.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0034.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0035.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0036.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0037.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0038.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0039.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0040.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0041.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0042.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0043.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0044.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0045.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0046.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0047.png",
"frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0048.png",
"frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0049.png",
"frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0050.png",
"frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0051.png",
"frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0052.png",
"frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0053.png",
"frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0054.png",
"frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0055.png",
"frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0056.png",
"frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0057.png",
"frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0058.png",
"frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0059.png",
"frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0060.png",
"frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0061.png",
"frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0062.png",
"frame": { "x": 458, "y": 292, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0063.png",
"frame": { "x": 303, "y": 364, "w": 74, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 74, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0064.png",
"frame": { "x": 227, "y": 294, "w": 75, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0065.png",
"frame": { "x": 378, "y": 364, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 5, "w": 75, "h": 69 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0066.png",
"frame": { "x": 303, "y": 293, "w": 75, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0067.png",
"frame": { "x": 379, "y": 293, "w": 75, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 4, "w": 75, "h": 70 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0068.png",
"frame": { "x": 454, "y": 364, "w": 72, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 8, "y": 3, "w": 72, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0069.png",
"frame": { "x": 70, "y": 365, "w": 68, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 68, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0070.png",
"frame": { "x": 291, "y": 435, "w": 62, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 17, "y": 2, "w": 62, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0071.png",
"frame": { "x": 378, "y": 434, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 15, "y": 2, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0072.png",
"frame": { "x": 224, "y": 365, "w": 66, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 66, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0073.png",
"frame": { "x": 0, "y": 365, "w": 69, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 8, "y": 2, "w": 69, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0074.png",
"frame": { "x": 229, "y": 220, "w": 73, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 1, "w": 73, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0075.png",
"frame": { "x": 468, "y": 0, "w": 75, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 1, "w": 75, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0076.png",
"frame": { "x": 308, "y": 147, "w": 74, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 1, "w": 74, "h": 73 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0077.png",
"frame": { "x": 0, "y": 148, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0078.png",
"frame": { "x": 383, "y": 220, "w": 74, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 74, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0079.png",
"frame": { "x": 231, "y": 147, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0080.png",
"frame": { "x": 79, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0081.png",
"frame": { "x": 156, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0082.png",
"frame": { "x": 310, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0083.png",
"frame": { "x": 464, "y": 74, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0084.png",
"frame": { "x": 77, "y": 147, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0085.png",
"frame": { "x": 154, "y": 147, "w": 76, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0086.png",
"frame": { "x": 76, "y": 220, "w": 75, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0087.png",
"frame": { "x": 152, "y": 220, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 3, "w": 76, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0088.png",
"frame": { "x": 0, "y": 221, "w": 75, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 3, "w": 75, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0089.png",
"frame": { "x": 0, "y": 293, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
},
{
"filename": "0090.png",
"frame": { "x": 75, "y": 293, "w": 74, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"sourceSize": { "w": 80, "h": 74 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"image": "668.png",
"format": "I8",
"size": { "w": 543, "h": 507 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,820 @@
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0002.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0003.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0004.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0005.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0006.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0007.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0008.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0009.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0010.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0011.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0012.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0013.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0014.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0015.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0016.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0017.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0018.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0019.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0020.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0021.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0022.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0023.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0024.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0025.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0026.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0027.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0028.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0029.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0030.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0031.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0032.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0033.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0034.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0035.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0036.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0037.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0038.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0039.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0040.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0041.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0042.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0043.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0044.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0045.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0046.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0047.png",
"frame": { "x": 76, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0048.png",
"frame": { "x": 152, "y": 283, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0049.png",
"frame": { "x": 73, "y": 284, "w": 74, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 5, "w": 74, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0050.png",
"frame": { "x": 460, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0051.png",
"frame": { "x": 227, "y": 350, "w": 74, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 14, "y": 6, "w": 74, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0052.png",
"frame": { "x": 385, "y": 284, "w": 75, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 6, "w": 75, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0053.png",
"frame": { "x": 472, "y": 283, "w": 77, "h": 67 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 6, "w": 77, "h": 67 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0054.png",
"frame": { "x": 233, "y": 282, "w": 77, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 5, "w": 77, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0055.png",
"frame": { "x": 396, "y": 215, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0056.png",
"frame": { "x": 0, "y": 214, "w": 76, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 3, "w": 76, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0057.png",
"frame": { "x": 399, "y": 144, "w": 76, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 2, "w": 76, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0058.png",
"frame": { "x": 431, "y": 73, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0059.png",
"frame": { "x": 242, "y": 142, "w": 77, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 2, "w": 77, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0060.png",
"frame": { "x": 156, "y": 213, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0061.png",
"frame": { "x": 475, "y": 144, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 11, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0062.png",
"frame": { "x": 0, "y": 144, "w": 78, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 3, "w": 78, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0063.png",
"frame": { "x": 233, "y": 213, "w": 78, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 4, "w": 78, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0064.png",
"frame": { "x": 156, "y": 144, "w": 79, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 4, "w": 79, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0065.png",
"frame": { "x": 319, "y": 144, "w": 80, "h": 68 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 9, "y": 5, "w": 80, "h": 68 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0066.png",
"frame": { "x": 242, "y": 73, "w": 80, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 9, "y": 4, "w": 80, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0067.png",
"frame": { "x": 310, "y": 282, "w": 75, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 13, "y": 4, "w": 75, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0068.png",
"frame": { "x": 534, "y": 350, "w": 71, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 17, "y": 4, "w": 71, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0069.png",
"frame": { "x": 301, "y": 351, "w": 67, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 21, "y": 3, "w": 67, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0070.png",
"frame": { "x": 0, "y": 353, "w": 63, "h": 75 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 25, "y": 3, "w": 63, "h": 75 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0071.png",
"frame": { "x": 204, "y": 417, "w": 63, "h": 75 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 25, "y": 2, "w": 63, "h": 75 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0072.png",
"frame": { "x": 139, "y": 352, "w": 65, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 23, "y": 3, "w": 65, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0073.png",
"frame": { "x": 73, "y": 352, "w": 66, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 21, "y": 3, "w": 66, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0074.png",
"frame": { "x": 368, "y": 351, "w": 69, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 18, "y": 4, "w": 69, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0075.png",
"frame": { "x": 0, "y": 284, "w": 73, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 15, "y": 4, "w": 73, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0076.png",
"frame": { "x": 475, "y": 214, "w": 76, "h": 69 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 12, "y": 4, "w": 76, "h": 69 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0077.png",
"frame": { "x": 319, "y": 212, "w": 77, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 3, "w": 77, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0078.png",
"frame": { "x": 82, "y": 73, "w": 80, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 7, "y": 2, "w": 80, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0079.png",
"frame": { "x": 519, "y": 72, "w": 83, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 1, "w": 83, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0080.png",
"frame": { "x": 434, "y": 0, "w": 85, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 0, "w": 85, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0081.png",
"frame": { "x": 261, "y": 0, "w": 86, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 86, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0082.png",
"frame": { "x": 174, "y": 0, "w": 87, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 87, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0083.png",
"frame": { "x": 87, "y": 0, "w": 87, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 87, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0084.png",
"frame": { "x": 0, "y": 0, "w": 87, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 0, "w": 87, "h": 73 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0085.png",
"frame": { "x": 347, "y": 0, "w": 87, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 1, "w": 87, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0086.png",
"frame": { "x": 519, "y": 0, "w": 85, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 1, "w": 85, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0087.png",
"frame": { "x": 347, "y": 72, "w": 84, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 1, "w": 84, "h": 72 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0088.png",
"frame": { "x": 0, "y": 73, "w": 82, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0089.png",
"frame": { "x": 162, "y": 73, "w": 80, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 8, "y": 2, "w": 80, "h": 71 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
},
{
"filename": "0090.png",
"frame": { "x": 78, "y": 144, "w": 78, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 10, "y": 3, "w": 78, "h": 70 },
"sourceSize": { "w": 89, "h": 78 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"format": "I8",
"size": { "w": 605, "h": 492 },
"scale": "1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,820 @@
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0002.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0003.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0004.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0005.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0006.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0007.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0008.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0009.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0010.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0011.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0012.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0013.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0014.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0015.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0016.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0017.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0018.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0019.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0020.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0021.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0022.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0023.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0024.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0025.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0026.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0027.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0028.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0029.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0030.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0031.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0032.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0033.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0034.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0035.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0036.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0037.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0038.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0039.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0040.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0041.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0042.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0043.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0044.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0045.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0046.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0047.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0048.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0049.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0050.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0051.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0052.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0053.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0054.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0055.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0056.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0057.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0058.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0059.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0060.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0061.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0062.png",
"frame": { "x": 0, "y": 147, "w": 64, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 64, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0063.png",
"frame": { "x": 127, "y": 152, "w": 64, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 64, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0064.png",
"frame": { "x": 465, "y": 146, "w": 65, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 65, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0065.png",
"frame": { "x": 399, "y": 146, "w": 66, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 66, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0066.png",
"frame": { "x": 334, "y": 74, "w": 66, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 66, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0067.png",
"frame": { "x": 191, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0068.png",
"frame": { "x": 126, "y": 223, "w": 62, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 6, "w": 62, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0069.png",
"frame": { "x": 462, "y": 217, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0070.png",
"frame": { "x": 188, "y": 291, "w": 61, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 6, "w": 61, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0071.png",
"frame": { "x": 249, "y": 291, "w": 60, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 5, "w": 60, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0072.png",
"frame": { "x": 62, "y": 292, "w": 60, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 60, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0073.png",
"frame": { "x": 122, "y": 295, "w": 60, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 60, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0074.png",
"frame": { "x": 182, "y": 363, "w": 59, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 6, "w": 59, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0075.png",
"frame": { "x": 60, "y": 364, "w": 59, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 6, "w": 59, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0076.png",
"frame": { "x": 0, "y": 362, "w": 60, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 7, "w": 60, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0077.png",
"frame": { "x": 327, "y": 217, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0078.png",
"frame": { "x": 268, "y": 74, "w": 66, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 66, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0079.png",
"frame": { "x": 0, "y": 74, "w": 69, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 69, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0080.png",
"frame": { "x": 376, "y": 0, "w": 73, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 73, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0081.png",
"frame": { "x": 227, "y": 0, "w": 75, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0082.png",
"frame": { "x": 76, "y": 0, "w": 76, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 76, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0083.png",
"frame": { "x": 0, "y": 0, "w": 76, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 76, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0084.png",
"frame": { "x": 152, "y": 0, "w": 75, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0085.png",
"frame": { "x": 302, "y": 0, "w": 74, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 74, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0086.png",
"frame": { "x": 449, "y": 0, "w": 72, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 5, "w": 72, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0087.png",
"frame": { "x": 449, "y": 73, "w": 71, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 71, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0088.png",
"frame": { "x": 69, "y": 74, "w": 69, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 69, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0089.png",
"frame": { "x": 201, "y": 74, "w": 67, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 67, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0090.png",
"frame": { "x": 334, "y": 145, "w": 65, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 65, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"format": "I8",
"size": { "w": 530, "h": 436 },
"scale": "1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,272 +1,659 @@
{
"textures": [
{
"image": "667.png",
"format": "RGBA8888",
"size": {
"w": 160,
"h": 160
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 46,
"w": 40,
"h": 46
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 0,
"y": 92,
"w": 40,
"h": 46
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 40,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 46
},
"frame": {
"x": 80,
"y": 0,
"w": 40,
"h": 46
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 120,
"y": 0,
"w": 40,
"h": 45
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 120,
"y": 0,
"w": 40,
"h": 45
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 120,
"y": 45,
"w": 40,
"h": 45
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 45
},
"frame": {
"x": 40,
"y": 90,
"w": 40,
"h": 45
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 40,
"h": 44
},
"frame": {
"x": 40,
"y": 46,
"w": 40,
"h": 44
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 46
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 40,
"h": 44
},
"frame": {
"x": 80,
"y": 46,
"w": 40,
"h": 44
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:fb79c9185dd67d4776808c312f36f7a4:a6c3c7cc2402b26f23f5ac4e23929ba7:02171d511e760c8a3e1b623ad6bf93f5$"
}
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0002.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0003.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0004.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0005.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0006.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0007.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0008.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0009.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0010.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0011.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0012.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0013.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0014.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0015.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0016.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0017.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0018.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0019.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0020.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0021.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0022.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0023.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0024.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0025.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0026.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0027.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0028.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0029.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0030.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0031.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0032.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0033.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0034.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0035.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0036.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0037.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0038.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0039.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0040.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0041.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0042.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0043.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0044.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0045.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0046.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0047.png",
"frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0048.png",
"frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0049.png",
"frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0050.png",
"frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0051.png",
"frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0052.png",
"frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0053.png",
"frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0054.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0055.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0056.png",
"frame": { "x": 85, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 41, "h": 48 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0057.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0058.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0059.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0060.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0061.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0062.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0063.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0064.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0065.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0066.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0067.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0068.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0069.png",
"frame": { "x": 0, "y": 0, "w": 42, "h": 49 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 42, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0070.png",
"frame": { "x": 43, "y": 0, "w": 41, "h": 49 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 0, "w": 41, "h": 49 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0071.png",
"frame": { "x": 85, "y": 0, "w": 41, "h": 48 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 1, "w": 41, "h": 48 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
},
{
"filename": "0072.png",
"frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"sourceSize": { "w": 42, "h": 49 },
"duration": 110
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"image": "667.png",
"format": "I8",
"size": { "w": 167, "h": 141 },
"scale": "1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,820 @@
{ "frames": [
{
"filename": "0001.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0002.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0003.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0004.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0005.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0006.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0007.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0008.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0009.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0010.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0011.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0012.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0013.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0014.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0015.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0016.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0017.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0018.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0019.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0020.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0021.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0022.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0023.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0024.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0025.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0026.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0027.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0028.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0029.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0030.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0031.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0032.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0033.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0034.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0035.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0036.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0037.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0038.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0039.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0040.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0041.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0042.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0043.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0044.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0045.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0046.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0047.png",
"frame": { "x": 0, "y": 291, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0048.png",
"frame": { "x": 453, "y": 289, "w": 62, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 62, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0049.png",
"frame": { "x": 441, "y": 360, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0050.png",
"frame": { "x": 309, "y": 359, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0051.png",
"frame": { "x": 380, "y": 358, "w": 61, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 8, "w": 61, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0052.png",
"frame": { "x": 317, "y": 289, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0053.png",
"frame": { "x": 390, "y": 288, "w": 63, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 63, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0054.png",
"frame": { "x": 254, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0055.png",
"frame": { "x": 63, "y": 220, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0056.png",
"frame": { "x": 399, "y": 216, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0057.png",
"frame": { "x": 64, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0058.png",
"frame": { "x": 138, "y": 74, "w": 63, "h": 78 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 0, "w": 63, "h": 78 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0059.png",
"frame": { "x": 201, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0060.png",
"frame": { "x": 264, "y": 147, "w": 63, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 63, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0061.png",
"frame": { "x": 0, "y": 219, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0062.png",
"frame": { "x": 0, "y": 147, "w": 64, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 64, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0063.png",
"frame": { "x": 127, "y": 152, "w": 64, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 64, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0064.png",
"frame": { "x": 465, "y": 146, "w": 65, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 7, "w": 65, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0065.png",
"frame": { "x": 399, "y": 146, "w": 66, "h": 70 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 8, "w": 66, "h": 70 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0066.png",
"frame": { "x": 334, "y": 74, "w": 66, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 7, "w": 66, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0067.png",
"frame": { "x": 191, "y": 220, "w": 63, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 7, "w": 63, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0068.png",
"frame": { "x": 126, "y": 223, "w": 62, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 6, "w": 62, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0069.png",
"frame": { "x": 462, "y": 217, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 0, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0070.png",
"frame": { "x": 188, "y": 291, "w": 61, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 1, "y": 6, "w": 61, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0071.png",
"frame": { "x": 249, "y": 291, "w": 60, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 2, "y": 5, "w": 60, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0072.png",
"frame": { "x": 62, "y": 292, "w": 60, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 60, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0073.png",
"frame": { "x": 122, "y": 295, "w": 60, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 60, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0074.png",
"frame": { "x": 182, "y": 363, "w": 59, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 6, "w": 59, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0075.png",
"frame": { "x": 60, "y": 364, "w": 59, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 6, "w": 59, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0076.png",
"frame": { "x": 0, "y": 362, "w": 60, "h": 71 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 7, "w": 60, "h": 71 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0077.png",
"frame": { "x": 327, "y": 217, "w": 63, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 6, "w": 63, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0078.png",
"frame": { "x": 268, "y": 74, "w": 66, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 66, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0079.png",
"frame": { "x": 0, "y": 74, "w": 69, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 5, "y": 5, "w": 69, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0080.png",
"frame": { "x": 376, "y": 0, "w": 73, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 73, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0081.png",
"frame": { "x": 227, "y": 0, "w": 75, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0082.png",
"frame": { "x": 76, "y": 0, "w": 76, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 76, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0083.png",
"frame": { "x": 0, "y": 0, "w": 76, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 76, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0084.png",
"frame": { "x": 152, "y": 0, "w": 75, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 75, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0085.png",
"frame": { "x": 302, "y": 0, "w": 74, "h": 74 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 4, "w": 74, "h": 74 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0086.png",
"frame": { "x": 449, "y": 0, "w": 72, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 4, "y": 5, "w": 72, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0087.png",
"frame": { "x": 449, "y": 73, "w": 71, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 71, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0088.png",
"frame": { "x": 69, "y": 74, "w": 69, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 69, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0089.png",
"frame": { "x": 201, "y": 74, "w": 67, "h": 73 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 5, "w": 67, "h": 73 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
},
{
"filename": "0090.png",
"frame": { "x": 334, "y": 145, "w": 65, "h": 72 },
"rotated": false,
"trimmed": true,
"spriteSourceSize": { "x": 3, "y": 6, "w": 65, "h": 72 },
"sourceSize": { "w": 80, "h": 78 },
"duration": 100
}
],
"meta": {
"app": "https://www.aseprite.org/",
"version": "1.3.11-x64",
"format": "I8",
"size": { "w": 530, "h": 436 },
"scale": "1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,41 +0,0 @@
{
"textures": [
{
"image": "668-female.png",
"format": "RGBA8888",
"size": {
"w": 72,
"h": 72
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 63,
"h": 72
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 63,
"h": 72
},
"frame": {
"x": 0,
"y": 0,
"w": 63,
"h": 72
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:bf61792d4b290b767953cfbbc5b6234f:c16e73a6866720618f3b4f8e3e0a0877:d99ed0e84a0695b54e479aa98271aba1$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 899 B

After

Width:  |  Height:  |  Size: 940 B

View File

@ -1397,7 +1397,7 @@
"612": [0, 1, 1],
"616": [0, 1, 1],
"617": [0, 1, 1],
"618": [0, 2, 2],
"618": [0, 1, 1],
"619": [0, 1, 1],
"620": [0, 1, 1],
"621": [0, 1, 1],
@ -2143,7 +2143,9 @@
"6705": [0, 1, 1],
"6706": [0, 1, 1],
"6713": [0, 1, 1],
"female": {},
"female": {
"6215": [0, 1, 1]
},
"back": {
"3-mega": [0, 2, 2],
"6-mega-x": [0, 2, 2],
@ -2470,7 +2472,10 @@
"6571": [0, 1, 1],
"6705": [0, 1, 1],
"6706": [0, 1, 1],
"6713": [0, 1, 1]
"6713": [0, 1, 1],
"female": {
"6215": [0, 1, 1]
}
}
}
}

View File

@ -0,0 +1,40 @@
{
"1": {
"cebd00": "bdac99",
"ffff00": "f3e6dd",
"6b6319": "987b6d",
"081019": "081019",
"52423a": "312118",
"6b524a": "4a342a",
"bd846b": "8c3841",
"846b63": "6b3838",
"d69c84": "ad4c4c",
"efce42": "eac2bd",
"d6cec5": "d6cec5",
"ffffff": "ffffff",
"081018": "081018",
"735a52": "564038",
"735a53": "564038",
"9c8473": "a08773",
"bda59c": "e6dbd6"
},
"2": {
"cebd00": "58536b",
"ffff00": "707488",
"6b6319": "39314a",
"081019": "081019",
"52423a": "5a2e2e",
"6b524a": "804e48",
"bd846b": "cec9b1",
"846b63": "9c7765",
"d69c84": "f0ead6",
"efce42": "9fadb9",
"d6cec5": "4c8c4c",
"ffffff": "79a962",
"081018": "204a29",
"735a52": "885011",
"735a53": "735555",
"9c8473": "c18a2c",
"bda59c": "efc44b"
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,32 @@
{
"1": {
"724ca2": "12968b",
"9c9bce": "ae8976",
"503678": "0f5d6d",
"956cbe": "31dabb",
"514a80": "402010",
"dcdbf7": "d0b3a4",
"080808": "080808",
"28234b": "220d0a",
"7d6ca4": "672e26",
"584d80": "401914",
"f6f6ff": "f6f6ff",
"bdbdc5": "bdbdc5",
"c52973": "ea903f"
},
"2": {
"724ca2": "982e33",
"9c9bce": "3c8775",
"503678": "601522",
"956cbe": "cc5427",
"514a80": "14273a",
"dcdbf7": "60ae7e",
"080808": "080808",
"28234b": "0a191e",
"7d6ca4": "395962",
"584d80": "1c3942",
"f6f6ff": "f6f6ff",
"bdbdc5": "bdbdc5",
"c52973": "f49633"
}
}

View File

@ -0,0 +1,38 @@
{
"1": {
"503678": "0f5d6d",
"080808": "080808",
"514a80": "402010",
"956cbe": "31dabb",
"9c9bce": "ae8976",
"724ca2": "12968b",
"dcdbf7": "d0b3a4",
"7d6ca4": "853a36",
"c58b08": "6e6f6f",
"ffde7b": "a7a7a7",
"584d80": "562627",
"28234b": "220d0a",
"c52973": "ea903f",
"bdbdc5": "bdbdc5",
"f6f6ff": "f6f6ff",
"000000": "000000"
},
"2": {
"503678": "601522",
"080808": "080808",
"514a80": "14273a",
"956cbe": "cc5427",
"9c9bce": "3c8775",
"724ca2": "982e33",
"dcdbf7": "60ae7e",
"7d6ca4": "395962",
"c58b08": "ffa341",
"ffde7b": "ffe07e",
"584d80": "1c3942",
"28234b": "0a191e",
"c52973": "f49633",
"bdbdc5": "bdbdc5",
"f6f6ff": "f6f6ff",
"000000": "000000"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

@ -1 +1 @@
Subproject commit 2d3765a4f035b4916523bf75b754e153e9d65134
Subproject commit f917baa1bb2fc5071587b7894ce7b4898cc64f36

View File

@ -161,6 +161,7 @@ export default class BattleScene extends SceneBase {
public reroll: boolean = false;
public shopCursorTarget: number = ShopCursorTarget.REWARDS;
public commandCursorMemory: boolean = false;
public dexForDevs: boolean = false;
public showMovesetFlyout: boolean = true;
public showArenaFlyout: boolean = true;
public showTimeOfDayWidget: boolean = true;
@ -1400,8 +1401,8 @@ export default class BattleScene extends SceneBase {
return this.currentBattle;
}
newArena(biome: Biome): Arena {
this.arena = new Arena(biome, Biome[biome].toLowerCase());
newArena(biome: Biome, playerFaints?: number): Arena {
this.arena = new Arena(biome, Biome[biome].toLowerCase(), playerFaints);
this.eventTarget.dispatchEvent(new NewArenaEvent());
this.arenaBg.pipelineData = { terrainColorRatio: this.arena.getBgTerrainColorRatioForBiome() };
@ -2352,14 +2353,14 @@ export default class BattleScene extends SceneBase {
}
/**
* Adds Phase to the end of phaseQueuePrepend, or at phaseQueuePrependSpliceIndex
* @param phase {@linkcode Phase} the phase to add
* Adds Phase(s) to the end of phaseQueuePrepend, or at phaseQueuePrependSpliceIndex
* @param phases {@linkcode Phase} the phase(s) to add
*/
unshiftPhase(phase: Phase): void {
unshiftPhase(...phases: Phase[]): void {
if (this.phaseQueuePrependSpliceIndex === -1) {
this.phaseQueuePrepend.push(phase);
this.phaseQueuePrepend.push(...phases);
} else {
this.phaseQueuePrepend.splice(this.phaseQueuePrependSpliceIndex, 0, phase);
this.phaseQueuePrepend.splice(this.phaseQueuePrependSpliceIndex, 0, ...phases);
}
}
@ -2497,32 +2498,38 @@ export default class BattleScene extends SceneBase {
* @param targetPhase {@linkcode Phase} the type of phase to search for in phaseQueue
* @returns boolean if a targetPhase was found and added
*/
prependToPhase(phase: Phase, targetPhase: Constructor<Phase>): boolean {
prependToPhase(phase: Phase | Phase [], targetPhase: Constructor<Phase>): boolean {
if (!Array.isArray(phase)) {
phase = [ phase ];
}
const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase);
if (targetIndex !== -1) {
this.phaseQueue.splice(targetIndex, 0, phase);
this.phaseQueue.splice(targetIndex, 0, ...phase);
return true;
} else {
this.unshiftPhase(phase);
this.unshiftPhase(...phase);
return false;
}
}
/**
* Tries to add the input phase to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()}
* @param phase {@linkcode Phase} the phase to be added
* Tries to add the input phase(s) to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()}
* @param phase {@linkcode Phase} the phase(s) to be added
* @param targetPhase {@linkcode Phase} the type of phase to search for in {@linkcode phaseQueue}
* @returns `true` if a `targetPhase` was found to append to
*/
appendToPhase(phase: Phase, targetPhase: Constructor<Phase>): boolean {
appendToPhase(phase: Phase | Phase[], targetPhase: Constructor<Phase>): boolean {
if (!Array.isArray(phase)) {
phase = [ phase ];
}
const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase);
if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) {
this.phaseQueue.splice(targetIndex + 1, 0, phase);
this.phaseQueue.splice(targetIndex + 1, 0, ...phase);
return true;
} else {
this.unshiftPhase(phase);
this.unshiftPhase(...phase);
return false;
}
}

View File

@ -101,10 +101,15 @@ export default class Battle {
public battleSeed: string = Utils.randomString(16, true);
private battleSeedState: string | null = null;
public moneyScattered: number = 0;
/** Primarily for double battles, keeps track of last enemy and player pokemon that triggered its ability or used a move */
public lastEnemyInvolved: number;
public lastPlayerInvolved: number;
public lastUsedPokeball: PokeballType | null = null;
/** The number of times a Pokemon on the player's side has fainted this battle */
public playerFaints: number = 0;
/** The number of times a Pokemon on the enemy's side has fainted this battle */
/**
* Saves the number of times a Pokemon on the enemy's side has fainted during this battle.
* This is saved here since we encounter a new enemy every wave.
* {@linkcode globalScene.arena.playerFaints} is the corresponding faint counter for the player and needs to be save across waves (reset every arena encounter).
*/
public enemyFaints: number = 0;
public playerFaintsHistory: FaintLogEntry[] = [];
public enemyFaintsHistory: FaintLogEntry[] = [];
@ -115,7 +120,7 @@ export default class Battle {
private rngCounter: number = 0;
constructor(gameMode: GameMode, waveIndex: number, battleType: BattleType, trainer?: Trainer, double?: boolean) {
constructor(gameMode: GameMode, waveIndex: number, battleType: BattleType, trainer?: Trainer, double: boolean = false) {
this.gameMode = gameMode;
this.waveIndex = waveIndex;
this.battleType = battleType;
@ -124,7 +129,7 @@ export default class Battle {
this.enemyLevels = battleType !== BattleType.TRAINER
? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave())
: trainer?.getPartyLevels(this.waveIndex);
this.double = double ?? false;
this.double = double;
}
private initBattleSpec(): void {

View File

@ -1003,7 +1003,7 @@ export class PostDefendPerishSongAbAttr extends PostDefendAbAttr {
override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): boolean {
if (move.checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon) && !move.hitsSubstitute(attacker, pokemon)) {
if (pokemon.getTag(BattlerTagType.PERISH_SONG) || attacker.getTag(BattlerTagType.PERISH_SONG)) {
if (attacker.getTag(BattlerTagType.PERISH_SONG)) {
return false;
} else {
if (!simulated) {
@ -2643,55 +2643,6 @@ export class PreSwitchOutResetStatusAbAttr extends PreSwitchOutAbAttr {
}
}
/**
* Clears Desolate Land/Primordial Sea/Delta Stream upon the Pokemon switching out.
*/
export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr {
/**
* @param pokemon The {@linkcode Pokemon} with the ability
* @param passive N/A
* @param args N/A
* @returns {boolean} Returns true if the weather clears, otherwise false.
*/
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
const weatherType = globalScene.arena.weather?.weatherType;
let turnOffWeather = false;
// Clear weather only if user's ability matches the weather and no other pokemon has the ability.
switch (weatherType) {
case (WeatherType.HARSH_SUN):
if (pokemon.hasAbility(Abilities.DESOLATE_LAND)
&& globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) {
turnOffWeather = true;
}
break;
case (WeatherType.HEAVY_RAIN):
if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA)
&& globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) {
turnOffWeather = true;
}
break;
case (WeatherType.STRONG_WINDS):
if (pokemon.hasAbility(Abilities.DELTA_STREAM)
&& globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) {
turnOffWeather = true;
}
break;
}
if (simulated) {
return turnOffWeather;
}
if (turnOffWeather) {
globalScene.arena.trySetWeather(WeatherType.NONE, false);
return true;
}
return false;
}
}
export class PreSwitchOutHealAbAttr extends PreSwitchOutAbAttr {
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
@ -2744,12 +2695,105 @@ export class PreSwitchOutFormChangeAbAttr extends PreSwitchOutAbAttr {
}
export class PreLeaveFieldAbAttr extends AbAttr {
applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
return false;
}
}
/**
* Clears Desolate Land/Primordial Sea/Delta Stream upon the Pokemon switching out.
*/
export class PreLeaveFieldClearWeatherAbAttr extends PreLeaveFieldAbAttr {
/**
* @param pokemon The {@linkcode Pokemon} with the ability
* @param passive N/A
* @param args N/A
* @returns Returns `true` if the weather clears, otherwise `false`.
*/
applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
const weatherType = globalScene.arena.weather?.weatherType;
let turnOffWeather = false;
// Clear weather only if user's ability matches the weather and no other pokemon has the ability.
switch (weatherType) {
case (WeatherType.HARSH_SUN):
if (pokemon.hasAbility(Abilities.DESOLATE_LAND)
&& globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) {
turnOffWeather = true;
}
break;
case (WeatherType.HEAVY_RAIN):
if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA)
&& globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) {
turnOffWeather = true;
}
break;
case (WeatherType.STRONG_WINDS):
if (pokemon.hasAbility(Abilities.DELTA_STREAM)
&& globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) {
turnOffWeather = true;
}
break;
}
if (simulated) {
return turnOffWeather;
}
if (turnOffWeather) {
globalScene.arena.trySetWeather(WeatherType.NONE, false);
return true;
}
return false;
}
}
export class PreStatStageChangeAbAttr extends AbAttr {
applyPreStatStageChange(pokemon: Pokemon | null, passive: boolean, simulated: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise<boolean> {
return false;
}
}
/**
* Reflect all {@linkcode BattleStat} reductions caused by other Pokémon's moves and Abilities.
* Currently only applies to Mirror Armor.
*/
export class ReflectStatStageChangeAbAttr extends PreStatStageChangeAbAttr {
/** {@linkcode BattleStat} to reflect */
private reflectedStat? : BattleStat;
/**
* Apply the {@linkcode ReflectStatStageChangeAbAttr} to an interaction
* @param _pokemon The user pokemon
* @param _passive N/A
* @param simulated `true` if the ability is being simulated by the AI
* @param stat the {@linkcode BattleStat} being affected
* @param cancelled The {@linkcode Utils.BooleanHolder} that will be set to true due to reflection
* @param args
* @returns true because it reflects any stat being lowered
*/
applyPreStatStageChange(_pokemon: Pokemon, _passive: boolean, simulated: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean {
const attacker: Pokemon = args[0];
const stages = args[1];
this.reflectedStat = stat;
if (!simulated) {
globalScene.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [ stat ], stages, true, false, true, null, true));
}
cancelled.value = true;
return true;
}
getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string {
return i18next.t("abilityTriggers:protectStat", {
pokemonNameWithAffix: getPokemonNameWithAffix(pokemon),
abilityName,
statName: this.reflectedStat ? i18next.t(getStatKey(this.reflectedStat)) : i18next.t("battle:stats")
});
}
}
/**
* Protect one or all {@linkcode BattleStat} from reductions caused by other Pokémon's moves and Abilities
*/
@ -4171,59 +4215,6 @@ export class PostFaintUnsuppressedWeatherFormChangeAbAttr extends PostFaintAbAtt
}
}
/**
* Clears Desolate Land/Primordial Sea/Delta Stream upon the Pokemon fainting
*/
export class PostFaintClearWeatherAbAttr extends PostFaintAbAttr {
/**
* @param pokemon The {@linkcode Pokemon} with the ability
* @param passive N/A
* @param attacker N/A
* @param move N/A
* @param hitResult N/A
* @param args N/A
* @returns {boolean} Returns true if the weather clears, otherwise false.
*/
applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean {
const weatherType = globalScene.arena.weather?.weatherType;
let turnOffWeather = false;
// Clear weather only if user's ability matches the weather and no other pokemon has the ability.
switch (weatherType) {
case (WeatherType.HARSH_SUN):
if (pokemon.hasAbility(Abilities.DESOLATE_LAND)
&& globalScene.getField(true).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) {
turnOffWeather = true;
}
break;
case (WeatherType.HEAVY_RAIN):
if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA)
&& globalScene.getField(true).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) {
turnOffWeather = true;
}
break;
case (WeatherType.STRONG_WINDS):
if (pokemon.hasAbility(Abilities.DELTA_STREAM)
&& globalScene.getField(true).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) {
turnOffWeather = true;
}
break;
}
if (simulated) {
return turnOffWeather;
}
if (turnOffWeather) {
globalScene.arena.trySetWeather(WeatherType.NONE, false);
return true;
}
return false;
}
}
export class PostFaintContactDamageAbAttr extends PostFaintAbAttr {
private damageRatio: number;
@ -4493,6 +4484,13 @@ export class InfiltratorAbAttr extends AbAttr {
}
}
/**
* Attribute implementing the effects of {@link https://bulbapedia.bulbagarden.net/wiki/Magic_Bounce_(ability) | Magic Bounce}.
* Allows the source to bounce back {@linkcode MoveFlags.REFLECTABLE | Reflectable}
* moves as if the user had used {@linkcode Moves.MAGIC_COAT | Magic Coat}.
*/
export class ReflectStatusMoveAbAttr extends AbAttr { }
export class UncopiableAbilityAbAttr extends AbAttr {
constructor() {
super(false);
@ -5229,6 +5227,11 @@ export function applyPreSwitchOutAbAttrs(attrType: Constructor<PreSwitchOutAbAtt
return applyAbAttrsInternal<PreSwitchOutAbAttr>(attrType, pokemon, (attr, passive) => attr.applyPreSwitchOut(pokemon, passive, simulated, args), args, true, simulated);
}
export function applyPreLeaveFieldAbAttrs(attrType: Constructor<PreLeaveFieldAbAttr>,
pokemon: Pokemon, simulated: boolean = false, ...args: any[]): Promise<void> {
return applyAbAttrsInternal<PreLeaveFieldAbAttr>(attrType, pokemon, (attr, passive) => attr.applyPreLeaveField(pokemon, passive, simulated, args), args, true, simulated);
}
export function applyPreStatStageChangeAbAttrs(attrType: Constructor<PreStatStageChangeAbAttr>,
pokemon: Pokemon | null, stat: BattleStat, cancelled: Utils.BooleanHolder, simulated: boolean = false, ...args: any[]): Promise<void> {
return applyAbAttrsInternal<PreStatStageChangeAbAttr>(attrType, pokemon, (attr, passive) => attr.applyPreStatStageChange(pokemon, passive, simulated, stat, cancelled, args), args, false, simulated);
@ -5809,8 +5812,11 @@ export function initAbilities() {
}, Stat.SPD, 1)
.attr(PostIntimidateStatStageChangeAbAttr, [ Stat.SPD ], 1),
new Ability(Abilities.MAGIC_BOUNCE, 5)
.attr(ReflectStatusMoveAbAttr)
.ignorable()
.unimplemented(),
// Interactions with stomping tantrum, instruct, encore, and probably other moves that
// rely on move history
.edgeCase(),
new Ability(Abilities.SAP_SIPPER, 5)
.attr(TypeImmunityStatStageChangeAbAttr, Type.GRASS, Stat.ATK, 1)
.ignorable(),
@ -5912,20 +5918,17 @@ export function initAbilities() {
new Ability(Abilities.PRIMORDIAL_SEA, 6)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HEAVY_RAIN)
.attr(PreSwitchOutClearWeatherAbAttr)
.attr(PostFaintClearWeatherAbAttr)
.attr(PreLeaveFieldClearWeatherAbAttr)
.bypassFaint(),
new Ability(Abilities.DESOLATE_LAND, 6)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.HARSH_SUN)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HARSH_SUN)
.attr(PreSwitchOutClearWeatherAbAttr)
.attr(PostFaintClearWeatherAbAttr)
.attr(PreLeaveFieldClearWeatherAbAttr)
.bypassFaint(),
new Ability(Abilities.DELTA_STREAM, 6)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.STRONG_WINDS)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.STRONG_WINDS)
.attr(PreSwitchOutClearWeatherAbAttr)
.attr(PostFaintClearWeatherAbAttr)
.attr(PreLeaveFieldClearWeatherAbAttr)
.bypassFaint(),
new Ability(Abilities.STAMINA, 7)
.attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1),
@ -6110,8 +6113,8 @@ export function initAbilities() {
new Ability(Abilities.PROPELLER_TAIL, 8)
.attr(BlockRedirectAbAttr),
new Ability(Abilities.MIRROR_ARMOR, 8)
.ignorable()
.unimplemented(),
.attr(ReflectStatStageChangeAbAttr)
.ignorable(),
/**
* Right now, the logic is attached to Surf and Dive moves. Ideally, the post-defend/hit should be an
* ability attribute but the current implementation of move effects for BattlerTag does not support this- in the case
@ -6138,7 +6141,8 @@ export function initAbilities() {
.attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.SOUND_BASED), 0.5)
.ignorable(),
new Ability(Abilities.SAND_SPIT, 8)
.attr(PostDefendWeatherChangeAbAttr, WeatherType.SANDSTORM, (target, user, move) => move.category !== MoveCategory.STATUS),
.attr(PostDefendWeatherChangeAbAttr, WeatherType.SANDSTORM, (target, user, move) => move.category !== MoveCategory.STATUS)
.bypassFaint(),
new Ability(Abilities.ICE_SCALES, 8)
.attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.SPECIAL, 0.5)
.ignorable(),
@ -6171,7 +6175,8 @@ export function initAbilities() {
new Ability(Abilities.STEELY_SPIRIT, 8)
.attr(UserFieldMoveTypePowerBoostAbAttr, Type.STEEL),
new Ability(Abilities.PERISH_BODY, 8)
.attr(PostDefendPerishSongAbAttr, 4),
.attr(PostDefendPerishSongAbAttr, 4)
.bypassFaint(),
new Ability(Abilities.WANDERING_SPIRIT, 8)
.attr(PostDefendAbilitySwapAbAttr)
.bypassFaint()
@ -6229,7 +6234,8 @@ export function initAbilities() {
.attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA)
.bypassFaint(),
new Ability(Abilities.SEED_SOWER, 9)
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY),
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY)
.bypassFaint(),
new Ability(Abilities.THERMAL_EXCHANGE, 9)
.attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1)
.attr(StatusEffectImmunityAbAttr, StatusEffect.BURN)
@ -6279,15 +6285,13 @@ export function initAbilities() {
.attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(NoTransformAbilityAbAttr)
.partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
.attr(NoTransformAbilityAbAttr),
new Ability(Abilities.QUARK_DRIVE, 9)
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true)
.attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(NoTransformAbilityAbAttr)
.partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
.attr(NoTransformAbilityAbAttr),
new Ability(Abilities.GOOD_AS_GOLD, 9)
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.category === MoveCategory.STATUS && ![ MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES, MoveTarget.USER_SIDE ].includes(move.moveTarget))
.ignorable(),
@ -6320,8 +6324,8 @@ export function initAbilities() {
new Ability(Abilities.SHARPNESS, 9)
.attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5),
new Ability(Abilities.SUPREME_OVERLORD, 9)
.attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.currentBattle.playerFaints : globalScene.currentBattle.enemyFaints, 5))
.partial(), // Counter resets every wave instead of on arena reset
.attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 5))
.partial(), // Should only boost once, on summon
new Ability(Abilities.COSTAR, 9)
.attr(PostSummonCopyAllyStatsAbAttr),
new Ability(Abilities.TOXIC_DEBRIS, 9)

View File

@ -910,7 +910,7 @@ class StickyWebTag extends ArenaTrapTag {
if (!cancelled.value) {
globalScene.queueMessage(i18next.t("arenaTag:stickyWebActivateTrap", { pokemonName: pokemon.getNameToRender() }));
const stages = new NumberHolder(-1);
globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, [ Stat.SPD ], stages.value));
globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, [ Stat.SPD ], stages.value, true, false, true, null, false, true));
return true;
}
}

View File

@ -7,10 +7,10 @@ import { Species } from "#enums/species";
export const speciesEggMoves = {
[Species.BULBASAUR]: [ Moves.SAPPY_SEED, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ],
[Species.CHARMANDER]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.EARTH_POWER, Moves.OBLIVION_WING ],
[Species.SQUIRTLE]: [ Moves.FREEZE_DRY, Moves.ARMOR_CANNON, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ],
[Species.SQUIRTLE]: [ Moves.FREEZE_DRY, Moves.ARMOR_CANNON, Moves.SHORE_UP, Moves.ORIGIN_PULSE ],
[Species.CATERPIE]: [ Moves.SANDSEAR_STORM, Moves.SILK_TRAP, Moves.TWIN_BEAM, Moves.BLEAKWIND_STORM ],
[Species.WEEDLE]: [ Moves.THOUSAND_ARROWS, Moves.NOXIOUS_TORQUE, Moves.ATTACK_ORDER, Moves.VICTORY_DANCE ],
[Species.PIDGEY]: [ Moves.WILDBOLT_STORM, Moves.SANDSEAR_STORM, Moves.NASTY_PLOT, Moves.BOOMBURST ],
[Species.PIDGEY]: [ Moves.BLEAKWIND_STORM, Moves.SANDSEAR_STORM, Moves.CALM_MIND, Moves.BOOMBURST ],
[Species.RATTATA]: [ Moves.HYPER_FANG, Moves.PSYCHIC_FANGS, Moves.FIRE_FANG, Moves.EXTREME_SPEED ],
[Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.HYPER_DRILL, Moves.TIDY_UP, Moves.TRIPLE_ARROWS ],
[Species.EKANS]: [ Moves.NOXIOUS_TORQUE, Moves.DRAGON_DANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ],
@ -34,7 +34,7 @@ export const speciesEggMoves = {
[Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.MALIGNANT_CHAIN, Moves.BOUNCY_BUBBLE, Moves.STRENGTH_SAP ],
[Species.GEODUDE]: [ Moves.FLARE_BLITZ, Moves.HEAD_SMASH, Moves.SHORE_UP, Moves.SHELL_SMASH ],
[Species.PONYTA]: [ Moves.HEADLONG_RUSH, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ],
[Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.FROST_BREATH, Moves.SHED_TAIL, Moves.MYSTICAL_POWER ],
[Species.SLOWPOKE]: [ Moves.SPLISHY_SPLASH, Moves.FROST_BREATH, Moves.SHED_TAIL, Moves.MYSTICAL_POWER ],
[Species.MAGNEMITE]: [ Moves.PARABOLIC_CHARGE, Moves.FLAMETHROWER, Moves.ICE_BEAM, Moves.THUNDERCLAP ],
[Species.FARFETCHD]: [ Moves.IVY_CUDGEL, Moves.TRIPLE_ARROWS, Moves.DRILL_RUN, Moves.VICTORY_DANCE ],
[Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.HYPER_DRILL, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ],
@ -52,7 +52,7 @@ export const speciesEggMoves = {
[Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.BODY_PRESS, Moves.MALIGNANT_CHAIN ],
[Species.RHYHORN]: [ Moves.SHORE_UP, Moves.ICE_HAMMER, Moves.ACCELEROCK, Moves.HEAD_SMASH ],
[Species.TANGELA]: [ Moves.NATURES_MADNESS, Moves.SNAP_TRAP, Moves.PARTING_SHOT, Moves.SAPPY_SEED ],
[Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.TRAILBLAZE, Moves.FACADE, Moves.SEISMIC_TOSS ],
[Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.TRAILBLAZE, Moves.COVET, Moves.SEISMIC_TOSS ],
[Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.SLUDGE_BOMB, Moves.CLANGING_SCALES ],
[Species.GOLDEEN]: [ Moves.GLACIAL_LANCE, Moves.SUPERCELL_SLAM, Moves.DRAGON_DANCE, Moves.FISHIOUS_REND ],
[Species.STARYU]: [ Moves.CALM_MIND, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MYSTICAL_POWER ],
@ -112,7 +112,7 @@ export const speciesEggMoves = {
[Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE ],
[Species.DELIBIRD]: [ Moves.BONEMERANG, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.GLACIAL_LANCE ],
[Species.SKARMORY]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.BEAK_BLAST ],
[Species.HOUNDOUR]: [ Moves.EARTH_POWER, Moves.THUNDERBOLT, Moves.MOONBLAST, Moves.FIERY_WRATH ],
[Species.HOUNDOUR]: [ Moves.FIERY_WRATH, Moves.THUNDERBOLT, Moves.MOONBLAST, Moves.ARMOR_CANNON ],
[Species.PHANPY]: [ Moves.SHORE_UP, Moves.SWORDS_DANCE, Moves.MOUNTAIN_GALE, Moves.COLLISION_COURSE ],
[Species.STANTLER]: [ Moves.THUNDEROUS_KICK, Moves.PHOTON_GEYSER, Moves.SWORDS_DANCE, Moves.BOOMBURST ],
[Species.SMEARGLE]: [ Moves.CONVERSION, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.DARK_VOID ],
@ -132,7 +132,7 @@ export const speciesEggMoves = {
[Species.TREECKO]: [ Moves.NASTY_PLOT, Moves.CORE_ENFORCER, Moves.FLAMETHROWER, Moves.SEED_FLARE ],
[Species.TORCHIC]: [ Moves.THUNDEROUS_KICK, Moves.ZING_ZAP, Moves.BURNING_BULWARK, Moves.PYRO_BALL ],
[Species.MUDKIP]: [ Moves.SHORE_UP, Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.PRECIPICE_BLADES ],
[Species.POOCHYENA]: [ Moves.JAW_LOCK, Moves.CLOSE_COMBAT, Moves.DIRE_CLAW, Moves.NO_RETREAT ],
[Species.POOCHYENA]: [ Moves.KNOCK_OFF, Moves.CLOSE_COMBAT, Moves.DIRE_CLAW, Moves.VICTORY_DANCE ],
[Species.ZIGZAGOON]: [ Moves.EXTREME_SPEED, Moves.NUZZLE, Moves.HIGH_HORSEPOWER, Moves.TIDY_UP ],
[Species.WURMPLE]: [ Moves.BATON_PASS, Moves.BLEAKWIND_STORM, Moves.STORED_POWER, Moves.MALIGNANT_CHAIN ],
[Species.LOTAD]: [ Moves.REVELATION_DANCE, Moves.APPLE_ACID, Moves.ICE_BEAM, Moves.QUIVER_DANCE ],
@ -185,26 +185,26 @@ export const speciesEggMoves = {
[Species.TROPIUS]: [ Moves.STUFF_CHEEKS, Moves.EARTH_POWER, Moves.APPLE_ACID, Moves.SAPPY_SEED ],
[Species.ABSOL]: [ Moves.KOWTOW_CLEAVE, Moves.SACRED_SWORD, Moves.PSYBLADE, Moves.BITTER_BLADE ],
[Species.WYNAUT]: [ Moves.RECOVER, Moves.SHED_TAIL, Moves.TAUNT, Moves.COMEUPPANCE ],
[Species.SNORUNT]: [ Moves.FREEZY_FROST, Moves.EXTREME_SPEED, Moves.EARTH_POWER, Moves.NO_RETREAT ],
[Species.SNORUNT]: [ Moves.SPARKLY_SWIRL, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.BLOOD_MOON ],
[Species.SPHEAL]: [ Moves.FLIP_TURN, Moves.FREEZE_DRY, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ],
[Species.CLAMPERL]: [ Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
[Species.RELICANTH]: [ Moves.DRAGON_DANCE, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.DIAMOND_STORM ],
[Species.LUVDISC]: [ Moves.BATON_PASS, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ],
[Species.BAGON]: [ Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.DRAGON_DARTS ],
[Species.BAGON]: [ Moves.HEADLONG_RUSH, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.DRAGON_DARTS ],
[Species.BELDUM]: [ Moves.HEADLONG_RUSH, Moves.DRAIN_PUNCH, Moves.TRIPLE_AXEL, Moves.SHIFT_GEAR ],
[Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ],
[Species.REGICE]: [ Moves.EARTH_POWER, Moves.TAKE_HEART, Moves.RECOVER, Moves.FREEZE_DRY ],
[Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.GIGATON_HAMMER ],
[Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.FUSION_FLARE, Moves.SPARKLY_SWIRL, Moves.MYSTICAL_POWER ],
[Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.BLUE_FLARE, Moves.NASTY_PLOT, Moves.TACHYON_CUTTER ],
[Species.KYOGRE]: [ Moves.WILDBOLT_STORM, Moves.HURRICANE, Moves.FREEZY_FROST, Moves.BOUNCY_BUBBLE ],
[Species.KYOGRE]: [ Moves.RECOVER, Moves.HURRICANE, Moves.FREEZY_FROST, Moves.WILDBOLT_STORM ],
[Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ],
[Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.CORE_ENFORCER, Moves.OBLIVION_WING ],
[Species.JIRACHI]: [ Moves.TACHYON_CUTTER, Moves.TRIPLE_ARROWS, Moves.ROCK_SLIDE, Moves.SHELL_SMASH ],
[Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.FUSION_FLARE, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ],
[Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE, Moves.ICE_SPINNER, Moves.SAPPY_SEED ],
[Species.CHIMCHAR]: [ Moves.FIERY_DANCE, Moves.SECRET_SWORD, Moves.TRIPLE_AXEL, Moves.SACRED_FIRE ],
[Species.CHIMCHAR]: [ Moves.THUNDERBOLT, Moves.SECRET_SWORD, Moves.TRIPLE_AXEL, Moves.SACRED_FIRE ],
[Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.TACHYON_CUTTER, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
[Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.HEAD_CHARGE, Moves.FLARE_BLITZ, Moves.EXTREME_SPEED ],
[Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.COSMIC_POWER, Moves.POWER_TRIP, Moves.AQUA_STEP ],
@ -215,15 +215,15 @@ export const speciesEggMoves = {
[Species.SHIELDON]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ],
[Species.BURMY]: [ Moves.FIERY_DANCE, Moves.DEFEND_ORDER, Moves.HEAL_ORDER, Moves.SAPPY_SEED ],
[Species.COMBEE]: [ Moves.SPORE, Moves.FLOATY_FALL, Moves.KINGS_SHIELD, Moves.VICTORY_DANCE ],
[Species.PACHIRISU]: [ Moves.FREEZY_FROST, Moves.SIZZLY_SLIDE, Moves.SLACK_OFF, Moves.ZIPPY_ZAP ],
[Species.PACHIRISU]: [ Moves.FREEZY_FROST, Moves.SIZZLY_SLIDE, Moves.SLACK_OFF, Moves.THUNDER_CAGE ],
[Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.SURGING_STRIKES ],
[Species.CHERUBI]: [ Moves.SLEEP_POWDER, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.FLOWER_TRICK ],
[Species.SHELLOS]: [ Moves.BOUNCY_BUBBLE, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
[Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.MIND_BLOWN, Moves.CALM_MIND, Moves.OBLIVION_WING ],
[Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ],
[Species.DRIFLOON]: [ Moves.PSYCHO_SHIFT, Moves.MIND_BLOWN, Moves.CALM_MIND, Moves.OBLIVION_WING ],
[Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.EXTREME_SPEED, Moves.THUNDEROUS_KICK, Moves.SWORDS_DANCE ],
[Species.GLAMEOW]: [ Moves.PARTING_SHOT, Moves.HIGH_HORSEPOWER, Moves.SWORDS_DANCE, Moves.EXTREME_SPEED ],
[Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.EERIE_SPELL, Moves.TORCH_SONG, Moves.BOOMBURST ],
[Species.STUNKY]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ],
[Species.STUNKY]: [ Moves.CEASELESS_EDGE, Moves.FIRE_LASH, Moves.RECOVER, Moves.DIRE_CLAW ],
[Species.BRONZOR]: [ Moves.RECOVER, Moves.TACHYON_CUTTER, Moves.GLARE, Moves.LUMINA_CRASH ],
[Species.BONSLY]: [ Moves.ACCELEROCK, Moves.SWORDS_DANCE, Moves.STRENGTH_SAP, Moves.SAPPY_SEED ],
[Species.MIME_JR]: [ Moves.CHILLY_RECEPTION, Moves.MOONBLAST, Moves.FROST_BREATH, Moves.LUMINA_CRASH ],
@ -237,18 +237,18 @@ export const speciesEggMoves = {
[Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.CRABHAMMER, Moves.WICKED_BLOW ],
[Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_SPINNER, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ],
[Species.CARNIVINE]: [ Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.COIL, Moves.SAPPY_SEED ],
[Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ],
[Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.SPLISHY_SPLASH, Moves.FREEZE_DRY, Moves.OBLIVION_WING ],
[Species.MANTYKE]: [ Moves.SPLISHY_SPLASH, Moves.FREEZY_FROST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ],
[Species.SNOVER]: [ Moves.LANDS_WRATH, Moves.POWDER, Moves.CALM_MIND, Moves.MATCHA_GOTCHA ],
[Species.ROTOM]: [ Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.ELECTRO_DRIFT ],
[Species.UXIE]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.RECOVER, Moves.SPARKLY_SWIRL ],
[Species.MESPRIT]: [ Moves.TAIL_GLOW, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ],
[Species.AZELF]: [ Moves.PSYSTRIKE, Moves.ICE_BEAM, Moves.MOONBLAST, Moves.TAIL_GLOW ],
[Species.UXIE]: [ Moves.LUMINA_CRASH, Moves.AURA_SPHERE, Moves.RECOVER, Moves.TAIL_GLOW ],
[Species.MESPRIT]: [ Moves.PHOTON_GEYSER, Moves.AURA_SPHERE, Moves.RECOVER, Moves.TAIL_GLOW ],
[Species.AZELF]: [ Moves.PSYSTRIKE, Moves.AURA_SPHERE, Moves.ICE_BEAM, Moves.TAIL_GLOW ],
[Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.TAKE_HEART, Moves.RECOVER, Moves.MAKE_IT_RAIN ],
[Species.PALKIA]: [ Moves.MALIGNANT_CHAIN, Moves.TAKE_HEART, Moves.RECOVER, Moves.ORIGIN_PULSE ],
[Species.HEATRAN]: [ Moves.MATCHA_GOTCHA, Moves.RECOVER, Moves.ERUPTION, Moves.TACHYON_CUTTER ],
[Species.REGIGIGAS]: [ Moves.SKILL_SWAP, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.GIGATON_HAMMER ],
[Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.SPECTRAL_THIEF ],
[Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.SPECTRAL_THIEF, Moves.RECOVER, Moves.COLLISION_COURSE ],
[Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.LUMINA_CRASH ],
[Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STORED_POWER, Moves.ORIGIN_PULSE ],
[Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FROST_BREATH, Moves.WILDBOLT_STORM, Moves.ORIGIN_PULSE ],
@ -264,14 +264,14 @@ export const speciesEggMoves = {
[Species.LILLIPUP]: [ Moves.CLOSE_COMBAT, Moves.BODY_SLAM, Moves.HIGH_HORSEPOWER, Moves.LAST_RESPECTS ],
[Species.PURRLOIN]: [ Moves.ENCORE, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.WICKED_BLOW ],
[Species.PANSAGE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.EARTHQUAKE, Moves.IVY_CUDGEL ],
[Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.HYDRO_STEAM, Moves.SCORCHING_SANDS, Moves.TORCH_SONG ],
[Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.EARTH_POWER, Moves.STEAM_ERUPTION ],
[Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.ERUPTION ],
[Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.EARTH_POWER, Moves.WATER_SPOUT ],
[Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.LUNAR_BLESSING, Moves.MYSTICAL_POWER ],
[Species.PIDOVE]: [ Moves.GUNK_SHOT, Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ],
[Species.BLITZLE]: [ Moves.HORN_LEECH, Moves.SWORDS_DANCE, Moves.FLARE_BLITZ, Moves.BOLT_STRIKE ],
[Species.ROGGENROLA]: [ Moves.BODY_PRESS, Moves.CURSE, Moves.SHORE_UP, Moves.DIAMOND_STORM ],
[Species.WOOBAT]: [ Moves.ESPER_WING, Moves.STORED_POWER, Moves.MYSTICAL_FIRE, Moves.OBLIVION_WING ],
[Species.DRILBUR]: [ Moves.METEOR_MASH, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR, Moves.PRECIPICE_BLADES ],
[Species.DRILBUR]: [ Moves.METEOR_MASH, Moves.ICE_SPINNER, Moves.SHIFT_GEAR, Moves.THOUSAND_ARROWS ],
[Species.AUDINO]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.WISH, Moves.MATCHA_GOTCHA ],
[Species.TIMBURR]: [ Moves.MACH_PUNCH, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.DOUBLE_IRON_BASH ],
[Species.TYMPOLE]: [ Moves.JET_PUNCH, Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.SURGING_STRIKES ],
@ -298,18 +298,18 @@ export const speciesEggMoves = {
[Species.SOLOSIS]: [ Moves.MIST_BALL, Moves.SPEED_SWAP, Moves.FLAMETHROWER, Moves.LIGHT_OF_RUIN ],
[Species.DUCKLETT]: [ Moves.SPLISHY_SPLASH, Moves.SANDSEAR_STORM, Moves.WILDBOLT_STORM, Moves.QUIVER_DANCE ],
[Species.VANILLITE]: [ Moves.EARTH_POWER, Moves.AURORA_VEIL, Moves.CALM_MIND, Moves.SPARKLY_SWIRL ],
[Species.DEERLING]: [ Moves.TIDY_UP, Moves.FLOWER_TRICK, Moves.BODY_SLAM, Moves.COMBAT_TORQUE ],
[Species.DEERLING]: [ Moves.TIDY_UP, Moves.HEADBUTT, Moves.COMBAT_TORQUE, Moves.FLOWER_TRICK ],
[Species.EMOLGA]: [ Moves.ICICLE_CRASH, Moves.ZING_ZAP, Moves.FLOATY_FALL, Moves.ELECTRIFY ],
[Species.KARRABLAST]: [ Moves.LEECH_LIFE, Moves.BITTER_BLADE, Moves.OBSTRUCT, Moves.DOUBLE_IRON_BASH ],
[Species.FOONGUS]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.SAPPY_SEED ],
[Species.FRILLISH]: [ Moves.CALM_MIND, Moves.BUZZY_BUZZ, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
[Species.ALOMOMOLA]: [ Moves.FLIP_TURN, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ],
[Species.JOLTIK]: [ Moves.WILDBOLT_STORM, Moves.PARABOLIC_CHARGE, Moves.EARTH_POWER, Moves.QUIVER_DANCE ],
[Species.FERROSEED]: [ Moves.SYNTHESIS, Moves.COMBAT_TORQUE, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ],
[Species.FERROSEED]: [ Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ],
[Species.KLINK]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.AURA_WHEEL ],
[Species.TYNAMO]: [ Moves.SCALD, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.AURA_WHEEL ],
[Species.ELGYEM]: [ Moves.THUNDERCLAP, Moves.BADDY_BAD, Moves.AURA_SPHERE, Moves.PHOTON_GEYSER ],
[Species.LITWICK]: [ Moves.PARTING_SHOT, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.TORCH_SONG ],
[Species.LITWICK]: [ Moves.GIGA_DRAIN, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.TORCH_SONG ],
[Species.AXEW]: [ Moves.STONE_AXE, Moves.DIRE_CLAW, Moves.BITTER_BLADE, Moves.GLAIVE_RUSH ],
[Species.CUBCHOO]: [ Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.ICE_SHARD, Moves.COLLISION_COURSE ],
[Species.CRYOGONAL]: [ Moves.FREEZING_GLARE, Moves.AURORA_VEIL, Moves.NASTY_PLOT, Moves.ORIGIN_PULSE ],
@ -325,14 +325,14 @@ export const speciesEggMoves = {
[Species.HEATMOR]: [ Moves.EARTH_POWER, Moves.OVERHEAT, Moves.THUNDERBOLT, Moves.V_CREATE ],
[Species.DURANT]: [ Moves.HIGH_HORSEPOWER, Moves.FIRST_IMPRESSION, Moves.SWORDS_DANCE, Moves.BEHEMOTH_BASH ],
[Species.DEINO]: [ Moves.FIERY_WRATH, Moves.ESPER_WING, Moves.SLUDGE_BOMB, Moves.FICKLE_BEAM ],
[Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.MAGMA_STORM, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ],
[Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.DAZZLING_GLEAM, Moves.EARTH_POWER, Moves.HYDRO_STEAM ],
[Species.COBALION]: [ Moves.BEHEMOTH_BLADE, Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ],
[Species.TERRAKION]: [ Moves.MIGHTY_CLEAVE, Moves.HEADLONG_RUSH, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ],
[Species.VIRIZION]: [ Moves.PSYBLADE, Moves.SAPPY_SEED, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ],
[Species.VIRIZION]: [ Moves.SAPPY_SEED, Moves.PSYBLADE, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ],
[Species.TORNADUS]: [ Moves.SANDSEAR_STORM, Moves.PARTING_SHOT, Moves.SPLISHY_SPLASH, Moves.OBLIVION_WING ],
[Species.THUNDURUS]: [ Moves.SANDSEAR_STORM, Moves.HURRICANE, Moves.FROST_BREATH, Moves.ELECTRO_SHOT ],
[Species.RESHIRAM]: [ Moves.ENERGY_BALL, Moves.TAKE_HEART, Moves.FICKLE_BEAM, Moves.ERUPTION ],
[Species.ZEKROM]: [ Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.BOLT_BEAK ],
[Species.ZEKROM]: [ Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.DRAGON_ENERGY ],
[Species.LANDORUS]: [ Moves.STONE_AXE, Moves.FLOATY_FALL, Moves.ROOST, Moves.BLEAKWIND_STORM ],
[Species.KYUREM]: [ Moves.DRAGON_DARTS, Moves.GLACIAL_LANCE, Moves.NO_RETREAT, Moves.DRAGON_ENERGY ],
[Species.KELDEO]: [ Moves.BOUNCY_BUBBLE, Moves.THUNDERBOLT, Moves.ICE_BEAM, Moves.STEAM_ERUPTION ],
@ -366,35 +366,35 @@ export const speciesEggMoves = {
[Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ],
[Species.GOOMY]: [ Moves.DRAGON_HAMMER, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ],
[Species.KLEFKI]: [ Moves.HEAL_BELL, Moves.ENCORE, Moves.INSTRUCT, Moves.TOPSY_TURVY ],
[Species.PHANTUMP]: [ Moves.RAGE_FIST, Moves.SLEEP_POWDER, Moves.SYNTHESIS, Moves.SAPPY_SEED ],
[Species.PHANTUMP]: [ Moves.RAGE_FIST, Moves.SLEEP_POWDER, Moves.BULK_UP, Moves.SAPPY_SEED ],
[Species.PUMPKABOO]: [ Moves.SPIRIT_SHACKLE, Moves.FIRE_LASH, Moves.DIRE_CLAW, Moves.SAPPY_SEED ],
[Species.BERGMITE]: [ Moves.STONE_AXE, Moves.METAL_BURST, Moves.BODY_PRESS, Moves.GLACIAL_LANCE ],
[Species.NOIBAT]: [ Moves.AEROBLAST, Moves.OVERDRIVE, Moves.NASTY_PLOT, Moves.CLANGING_SCALES ],
[Species.XERNEAS]: [ Moves.EARTH_POWER, Moves.SPRINGTIDE_STORM, Moves.STRENGTH_SAP, Moves.TAIL_GLOW ],
[Species.YVELTAL]: [ Moves.SHELL_SIDE_ARM, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ],
[Species.YVELTAL]: [ Moves.SLUDGE_WAVE, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ],
[Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.HEAL_ORDER, Moves.CLANGOROUS_SOUL, Moves.DOUBLE_IRON_BASH ],
[Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.FIERY_DANCE, Moves.SHORE_UP, Moves.GEOMANCY ],
[Species.HOOPA]: [ Moves.PHOTON_GEYSER, Moves.SECRET_SWORD, Moves.FIERY_WRATH, Moves.SHELL_SMASH ],
[Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.ENERGY_BALL, Moves.MAGMA_STORM ],
[Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.SEARING_SHOT, Moves.THUNDERCLAP ],
[Species.ETERNAL_FLOETTE]: [ Moves.MIND_BLOWN, Moves.CHLOROBLAST, Moves.LUSTER_PURGE, Moves.QUIVER_DANCE ],
[Species.ROWLET]: [ Moves.THOUSAND_ARROWS, Moves.SHADOW_BONE, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ],
[Species.LITTEN]: [ Moves.SUCKER_PUNCH, Moves.PARTING_SHOT, Moves.SLACK_OFF, Moves.SACRED_FIRE ],
[Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.BOUNCY_BUBBLE, Moves.OVERDRIVE, Moves.TORCH_SONG ],
[Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.MOONLIGHT, Moves.OVERDRIVE, Moves.TORCH_SONG ],
[Species.PIKIPEK]: [ Moves.DUAL_WINGBEAT, Moves.BONE_RUSH, Moves.BURNING_BULWARK, Moves.POPULATION_BOMB ],
[Species.YUNGOOS]: [ Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.TIDY_UP, Moves.MULTI_ATTACK ],
[Species.GRUBBIN]: [ Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.THUNDERCLAP, Moves.QUIVER_DANCE ],
[Species.CRABRAWLER]: [ Moves.JET_PUNCH, Moves.SHORE_UP, Moves.SUCKER_PUNCH, Moves.SURGING_STRIKES ],
[Species.CRABRAWLER]: [ Moves.JET_PUNCH, Moves.SHORE_UP, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ],
[Species.ORICORIO]: [ Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.THUNDERCLAP, Moves.OBLIVION_WING ],
[Species.CUTIEFLY]: [ Moves.STICKY_WEB, Moves.SLEEP_POWDER, Moves.HEAT_WAVE, Moves.SPARKLY_SWIRL ],
[Species.ROCKRUFF]: [ Moves.HIGH_HORSEPOWER, Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.MIGHTY_CLEAVE ],
[Species.WISHIWASHI]: [ Moves.HEAL_ORDER, Moves.FREEZE_DRY, Moves.WATER_SHURIKEN, Moves.TAIL_GLOW ],
[Species.MAREANIE]: [ Moves.CEASELESS_EDGE, Moves.SIZZLY_SLIDE, Moves.BODY_PRESS, Moves.LEECH_SEED ],
[Species.MUDBRAY]: [ Moves.BODY_PRESS, Moves.YAWN, Moves.SHORE_UP, Moves.THOUSAND_WAVES ],
[Species.DEWPIDER]: [ Moves.JET_PUNCH, Moves.SILK_TRAP, Moves.SWORDS_DANCE, Moves.AQUA_STEP ],
[Species.DEWPIDER]: [ Moves.AQUA_STEP, Moves.SILK_TRAP, Moves.SWORDS_DANCE, Moves.JET_PUNCH ],
[Species.FOMANTIS]: [ Moves.SUPERPOWER, Moves.HEADLONG_RUSH, Moves.ICE_HAMMER, Moves.BITTER_BLADE ],
[Species.MORELULL]: [ Moves.CALM_MIND, Moves.SAPPY_SEED, Moves.DRAINING_KISS, Moves.MATCHA_GOTCHA ],
[Species.SALANDIT]: [ Moves.SCALD, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER, Moves.ERUPTION ],
[Species.SALANDIT]: [ Moves.SCALD, Moves.MALIGNANT_CHAIN, Moves.CORE_ENFORCER, Moves.ERUPTION ],
[Species.STUFFUL]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.TRIPLE_AXEL, Moves.RAGE_FIST ],
[Species.BOUNSWEET]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK, Moves.SAPPY_SEED ],
[Species.COMFEY]: [ Moves.REVIVAL_BLESSING, Moves.TAKE_HEART, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA ],
@ -416,25 +416,25 @@ export const speciesEggMoves = {
[Species.TAPU_KOKO]: [ Moves.MAGICAL_TORQUE, Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.BOLT_STRIKE ],
[Species.TAPU_LELE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.HEAT_WAVE, Moves.EXPANDING_FORCE ],
[Species.TAPU_BULU]: [ Moves.SAPPY_SEED, Moves.DRAIN_PUNCH, Moves.MAGICAL_TORQUE, Moves.VICTORY_DANCE ],
[Species.TAPU_FINI]: [ Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.RECOVER, Moves.QUIVER_DANCE ],
[Species.TAPU_FINI]: [ Moves.SPRINGTIDE_STORM, Moves.EARTH_POWER, Moves.RECOVER, Moves.QUIVER_DANCE ],
[Species.COSMOG]: [ Moves.PHOTON_GEYSER, Moves.PRECIPICE_BLADES, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE ],
[Species.NIHILEGO]: [ Moves.STRENGTH_SAP, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.QUIVER_DANCE ],
[Species.BUZZWOLE]: [ Moves.FIRST_IMPRESSION, Moves.COMBAT_TORQUE, Moves.ROCK_BLAST, Moves.DOUBLE_IRON_BASH ],
[Species.PHEROMOSA]: [ Moves.SECRET_SWORD, Moves.MAKE_IT_RAIN, Moves.ATTACK_ORDER, Moves.DIAMOND_STORM ],
[Species.XURKITREE]: [ Moves.FLAMETHROWER, Moves.GIGA_DRAIN, Moves.TAIL_GLOW, Moves.THUNDERCLAP ],
[Species.CELESTEELA]: [ Moves.RECOVER, Moves.BUZZY_BUZZ, Moves.SANDSEAR_STORM, Moves.OBLIVION_WING ],
[Species.CELESTEELA]: [ Moves.RECOVER, Moves.BUZZY_BUZZ, Moves.EARTH_POWER, Moves.OBLIVION_WING ],
[Species.KARTANA]: [ Moves.MIGHTY_CLEAVE, Moves.PSYBLADE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ],
[Species.GUZZLORD]: [ Moves.SUCKER_PUNCH, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ],
[Species.NECROZMA]: [ Moves.DYNAMAX_CANNON, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE, Moves.CLANGOROUS_SOUL ],
[Species.MAGEARNA]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.MAKE_IT_RAIN ],
[Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.TRIPLE_AXEL, Moves.METEOR_MASH, Moves.STORM_THROW ],
[Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.BONEMERANG, Moves.METEOR_MASH, Moves.TRIPLE_AXEL ],
[Species.POIPOLE]: [ Moves.MALIGNANT_CHAIN, Moves.ICE_BEAM, Moves.ARMOR_CANNON, Moves.CLANGING_SCALES ],
[Species.STAKATAKA]: [ Moves.HEAVY_SLAM, Moves.SHORE_UP, Moves.CURSE, Moves.SALT_CURE ],
[Species.BLACEPHALON]: [ Moves.STEEL_BEAM, Moves.MOONBLAST, Moves.CHLOROBLAST, Moves.MOONGEIST_BEAM ],
[Species.ZERAORA]: [ Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE, Moves.PYRO_BALL ],
[Species.ZERAORA]: [ Moves.SWORDS_DANCE, Moves.U_TURN, Moves.COLLISION_COURSE, Moves.TRIPLE_AXEL ],
[Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS ],
[Species.ALOLA_RATTATA]: [ Moves.FALSE_SURRENDER, Moves.PSYCHIC_FANGS, Moves.COIL, Moves.EXTREME_SPEED ],
[Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.AQUA_CUTTER, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ],
[Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.LIQUIDATION, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ],
[Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.PARTING_SHOT, Moves.EARTH_POWER, Moves.REVIVAL_BLESSING ],
[Species.ALOLA_DIGLETT]: [ Moves.THOUSAND_WAVES, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.MOUNTAIN_GALE ],
[Species.ALOLA_MEOWTH]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ],
@ -449,22 +449,22 @@ export const speciesEggMoves = {
[Species.BLIPBUG]: [ Moves.HEAL_ORDER, Moves.LUSTER_PURGE, Moves.SLEEP_POWDER, Moves.TAIL_GLOW ],
[Species.NICKIT]: [ Moves.BADDY_BAD, Moves.FLAMETHROWER, Moves.SPARKLY_SWIRL, Moves.MAKE_IT_RAIN ],
[Species.GOSSIFLEUR]: [ Moves.PARTING_SHOT, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SEED_FLARE ],
[Species.WOOLOO]: [ Moves.PSYSHIELD_BASH, Moves.MILK_DRINK, Moves.BODY_PRESS, Moves.MULTI_ATTACK ],
[Species.WOOLOO]: [ Moves.NUZZLE, Moves.MILK_DRINK, Moves.BODY_PRESS, Moves.MULTI_ATTACK ],
[Species.CHEWTLE]: [ Moves.ICE_FANG, Moves.PSYCHIC_FANGS, Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE ],
[Species.YAMPER]: [ Moves.ICE_FANG, Moves.SWORDS_DANCE, Moves.THUNDER_FANG, Moves.BOLT_STRIKE ],
[Species.ROLYCOLY]: [ Moves.BITTER_BLADE, Moves.BODY_PRESS, Moves.BULK_UP, Moves.DIAMOND_STORM ],
[Species.APPLIN]: [ Moves.CORE_ENFORCER, Moves.DRAGON_HAMMER, Moves.FLOWER_TRICK, Moves.MATCHA_GOTCHA ],
[Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.MOUNTAIN_GALE, Moves.THOUSAND_ARROWS ],
[Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.SCORCHING_SANDS, Moves.OBLIVION_WING ],
[Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.BOLT_BEAK, Moves.OBLIVION_WING ],
[Species.ARROKUDA]: [ Moves.SUPERCELL_SLAM, Moves.TRIPLE_DIVE, Moves.ICE_SPINNER, Moves.SWORDS_DANCE ],
[Species.TOXEL]: [ Moves.NASTY_PLOT, Moves.BUG_BUZZ, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ],
[Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.BITTER_BLADE ],
[Species.CLOBBOPUS]: [ Moves.STORM_THROW, Moves.JET_PUNCH, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ],
[Species.SINISTEA]: [ Moves.SCALD, Moves.TAKE_HEART, Moves.SPARKLY_SWIRL, Moves.MATCHA_GOTCHA ],
[Species.SINISTEA]: [ Moves.SPLISHY_SPLASH, Moves.MATCHA_GOTCHA, Moves.DRAINING_KISS, Moves.MOONGEIST_BEAM ],
[Species.HATENNA]: [ Moves.RECOVER, Moves.MOONBLAST, Moves.BUZZY_BUZZ, Moves.TORCH_SONG ],
[Species.IMPIDIMP]: [ Moves.ENCORE, Moves.PARTING_SHOT, Moves.TOPSY_TURVY, Moves.WICKED_BLOW ],
[Species.IMPIDIMP]: [ Moves.SLACK_OFF, Moves.PARTING_SHOT, Moves.OCTOLOCK, Moves.WICKED_BLOW ],
[Species.MILCERY]: [ Moves.MOONBLAST, Moves.CHILLY_RECEPTION, Moves.EARTH_POWER, Moves.GEOMANCY ],
[Species.FALINKS]: [ Moves.COMBAT_TORQUE, Moves.PSYSHIELD_BASH, Moves.HEAL_ORDER, Moves.POPULATION_BOMB ],
[Species.FALINKS]: [ Moves.BATON_PASS, Moves.POWER_TRIP, Moves.HEAL_ORDER, Moves.COMBAT_TORQUE ],
[Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.VOLT_SWITCH, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ],
[Species.SNOM]: [ Moves.FROST_BREATH, Moves.HEAL_ORDER, Moves.EARTH_POWER, Moves.SPORE ],
[Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.HELPING_HAND, Moves.ACCELEROCK, Moves.DIAMOND_STORM ],
@ -484,9 +484,9 @@ export const speciesEggMoves = {
[Species.KUBFU]: [ Moves.METEOR_MASH, Moves.DRAIN_PUNCH, Moves.JET_PUNCH, Moves.DRAGON_DANCE ],
[Species.ZARUDE]: [ Moves.SAPPY_SEED, Moves.MIGHTY_CLEAVE, Moves.WICKED_BLOW, Moves.VICTORY_DANCE ],
[Species.REGIELEKI]: [ Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.ELECTRO_DRIFT ],
[Species.REGIDRAGO]: [ Moves.METEOR_MASH, Moves.FLAMETHROWER, Moves.TAKE_HEART, Moves.DRAGON_DARTS ],
[Species.REGIDRAGO]: [ Moves.SHELL_SIDE_ARM, Moves.FLAMETHROWER, Moves.TAKE_HEART, Moves.DRAGON_DARTS ],
[Species.GLASTRIER]: [ Moves.SPEED_SWAP, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ],
[Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ],
[Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.MOONLIGHT, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ],
[Species.CALYREX]: [ Moves.SAPPY_SEED, Moves.RECOVER, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER ],
[Species.ENAMORUS]: [ Moves.AEROBLAST, Moves.THOUSAND_ARROWS, Moves.STORED_POWER, Moves.FLEUR_CANNON ],
[Species.GALAR_MEOWTH]: [ Moves.LIQUIDATION, Moves.HORN_LEECH, Moves.BULLET_PUNCH, Moves.BEHEMOTH_BASH ],
@ -494,7 +494,7 @@ export const speciesEggMoves = {
[Species.GALAR_SLOWPOKE]: [ Moves.SHED_TAIL, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.PHOTON_GEYSER ],
[Species.GALAR_FARFETCHD]: [ Moves.ROOST, Moves.SACRED_SWORD, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BLADE ],
[Species.GALAR_ARTICUNO]: [ Moves.SECRET_SWORD, Moves.NIGHT_DAZE, Moves.ICE_BEAM, Moves.OBLIVION_WING ],
[Species.GALAR_ZAPDOS]: [ Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ],
[Species.GALAR_ZAPDOS]: [ Moves.POISON_JAB, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ],
[Species.GALAR_MOLTRES]: [ Moves.ROOST, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ],
[Species.GALAR_CORSOLA]: [ Moves.SHELL_SMASH, Moves.AURA_SPHERE, Moves.INFERNAL_PARADE, Moves.ASTRAL_BARRAGE ],
[Species.GALAR_ZIGZAGOON]: [ Moves.CEASELESS_EDGE, Moves.FACADE, Moves.PARTING_SHOT, Moves.EXTREME_SPEED ],
@ -510,7 +510,7 @@ export const speciesEggMoves = {
[Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ],
[Species.FUECOCO]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.OVERDRIVE, Moves.MOONGEIST_BEAM ],
[Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.POWER_TRIP, Moves.THUNDEROUS_KICK ],
[Species.LECHONK]: [ Moves.MILK_DRINK, Moves.PSYSHIELD_BASH, Moves.FILLET_AWAY, Moves.MULTI_ATTACK ],
[Species.LECHONK]: [ Moves.MILK_DRINK, Moves.PSYSHIELD_BASH, Moves.BLAZING_TORQUE, Moves.FILLET_AWAY ],
[Species.TAROUNTULA]: [ Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.THIEF, Moves.SPORE ],
[Species.NYMBLE]: [ Moves.KNOCK_OFF, Moves.FELL_STINGER, Moves.ATTACK_ORDER, Moves.WICKED_BLOW ],
[Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.JET_PUNCH, Moves.PLASMA_FISTS ],
@ -522,13 +522,13 @@ export const speciesEggMoves = {
[Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.SPECTRAL_THIEF ],
[Species.TADBULB]: [ Moves.PARABOLIC_CHARGE, Moves.SCALD, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ],
[Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.SPLISHY_SPLASH, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ],
[Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.CLOSE_COMBAT, Moves.PSYCHIC_FANGS, Moves.NO_RETREAT ],
[Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.COMBAT_TORQUE, Moves.PSYCHIC_FANGS, Moves.NO_RETREAT ],
[Species.SHROODLE]: [ Moves.GASTRO_ACID, Moves.PARTING_SHOT, Moves.TOXIC, Moves.SKETCH ],
[Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.FLOWER_TRICK, Moves.LAST_RESPECTS ],
[Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.TOPSY_TURVY, Moves.SAPPY_SEED, Moves.TAIL_GLOW ],
[Species.KLAWF]: [ Moves.CRABHAMMER, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH ],
[Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FROST_BREATH, Moves.TORCH_SONG ],
[Species.RELLOR]: [ Moves.HEAL_BLOCK, Moves.RECOVER, Moves.HEAT_WAVE, Moves.LUMINA_CRASH ],
[Species.RELLOR]: [ Moves.HEAL_BLOCK, Moves.RECOVER, Moves.MAGIC_POWDER, Moves.LUMINA_CRASH ],
[Species.FLITTLE]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.ROOST, Moves.FIERY_DANCE ],
[Species.TINKATINK]: [ Moves.MAGICAL_TORQUE, Moves.PYRO_BALL, Moves.IVY_CUDGEL, Moves.SHIFT_GEAR ],
[Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ],
@ -537,11 +537,11 @@ export const speciesEggMoves = {
[Species.VAROOM]: [ Moves.COMBAT_TORQUE, Moves.U_TURN, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ],
[Species.CYCLIZAR]: [ Moves.PARTING_SHOT, Moves.FIRE_LASH, Moves.MAGICAL_TORQUE, Moves.GLAIVE_RUSH ],
[Species.ORTHWORM]: [ Moves.SIZZLY_SLIDE, Moves.COIL, Moves.BODY_PRESS, Moves.SHORE_UP ],
[Species.GLIMMET]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.FIERY_DANCE, Moves.MALIGNANT_CHAIN ],
[Species.GLIMMET]: [ Moves.CALM_MIND, Moves.GIGA_DRAIN, Moves.FIERY_DANCE, Moves.MALIGNANT_CHAIN ],
[Species.GREAVARD]: [ Moves.SHADOW_BONE, Moves.YAWN, Moves.SHORE_UP, Moves.COLLISION_COURSE ],
[Species.FLAMIGO]: [ Moves.THUNDEROUS_KICK, Moves.TRIPLE_AXEL, Moves.FLOATY_FALL, Moves.VICTORY_DANCE ],
[Species.CETODDLE]: [ Moves.MOUNTAIN_GALE, Moves.HIGH_HORSEPOWER, Moves.SLACK_OFF, Moves.DRAGON_DANCE ],
[Species.VELUZA]: [ Moves.PSYBLADE, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.BITTER_BLADE ],
[Species.CETODDLE]: [ Moves.ZING_ZAP, Moves.HIGH_HORSEPOWER, Moves.SLACK_OFF, Moves.DRAGON_DANCE ],
[Species.VELUZA]: [ Moves.PSYBLADE, Moves.LEAF_BLADE, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE ],
[Species.DONDOZO]: [ Moves.SOFT_BOILED, Moves.SIZZLY_SLIDE, Moves.BREAKING_SWIPE, Moves.SALT_CURE ],
[Species.TATSUGIRI]: [ Moves.SLUDGE_BOMB, Moves.FILLET_AWAY, Moves.CORE_ENFORCER, Moves.STEAM_ERUPTION ],
[Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.MORNING_SUN, Moves.COLLISION_COURSE, Moves.SHIFT_GEAR ],
@ -551,7 +551,7 @@ export const speciesEggMoves = {
[Species.SLITHER_WING]: [ Moves.MIGHTY_CLEAVE, Moves.THUNDEROUS_KICK, Moves.FIRE_LASH, Moves.VICTORY_DANCE ],
[Species.SANDY_SHOCKS]: [ Moves.MORNING_SUN, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.THUNDERCLAP ],
[Species.IRON_TREADS]: [ Moves.FUSION_BOLT, Moves.BULK_UP, Moves.SHORE_UP, Moves.SUNSTEEL_STRIKE ],
[Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.STEAM_ERUPTION ],
[Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.SPLISHY_SPLASH, Moves.VOLT_SWITCH, Moves.NASTY_PLOT ],
[Species.IRON_HANDS]: [ Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS, Moves.ICE_HAMMER ],
[Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.ROOST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ],
[Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN, Moves.QUIVER_DANCE ],
@ -566,7 +566,7 @@ export const speciesEggMoves = {
[Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.NO_RETREAT, Moves.SECRET_SWORD, Moves.MAGICAL_TORQUE ],
[Species.KORAIDON]: [ Moves.SUNSTEEL_STRIKE, Moves.SOLAR_BLADE, Moves.DRAGON_DARTS, Moves.BITTER_BLADE ],
[Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CLANGOROUS_SOUL, Moves.CORE_ENFORCER, Moves.RISING_VOLTAGE ],
[Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER ],
[Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.FUSION_FLARE, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER ],
[Species.IRON_LEAVES]: [ Moves.BITTER_BLADE, Moves.U_TURN, Moves.MIGHTY_CLEAVE, Moves.VICTORY_DANCE ],
[Species.POLTCHAGEIST]: [ Moves.PARABOLIC_CHARGE, Moves.BOUNCY_BUBBLE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ],
[Species.OKIDOGI]: [ Moves.COMBAT_TORQUE, Moves.TIDY_UP, Moves.DIRE_CLAW, Moves.WICKED_BLOW ],
@ -578,7 +578,7 @@ export const speciesEggMoves = {
[Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.KOWTOW_CLEAVE, Moves.STONE_AXE, Moves.BITTER_BLADE ],
[Species.IRON_CROWN]: [ Moves.NASTY_PLOT, Moves.SECRET_SWORD, Moves.PSYSTRIKE, Moves.ELECTRO_DRIFT ],
[Species.TERAPAGOS]: [ Moves.MOONBLAST, Moves.RECOVER, Moves.ICE_BEAM, Moves.SHELL_SMASH ],
[Species.PECHARUNT]: [ Moves.TAKE_HEART, Moves.BODY_PRESS, Moves.SAPPY_SEED, Moves.KINGS_SHIELD ],
[Species.PECHARUNT]: [ Moves.TAKE_HEART, Moves.BODY_PRESS, Moves.SAPPY_SEED, Moves.ASTRAL_BARRAGE ],
[Species.PALDEA_TAUROS]: [ Moves.NO_RETREAT, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK ],
[Species.PALDEA_WOOPER]: [ Moves.STONE_AXE, Moves.RECOVER, Moves.BANEFUL_BUNKER, Moves.BARB_BARRAGE ],
[Species.BLOODMOON_URSALUNA]: [ Moves.NASTY_PLOT, Moves.ROCK_POLISH, Moves.SANDSEAR_STORM, Moves.BOOMBURST ]

View File

@ -12,7 +12,7 @@ interface StarterPassiveAbilities {
export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE },
[Species.CHARMANDER]: { 0: Abilities.BEAST_BOOST },
[Species.SQUIRTLE]: { 0: Abilities.STURDY },
[Species.SQUIRTLE]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.CATERPIE]: { 0: Abilities.MAGICIAN },
[Species.WEEDLE]: { 0: Abilities.TINTED_LENS },
[Species.PIDGEY]: { 0: Abilities.SHEER_FORCE },
@ -57,7 +57,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.KOFFING]: { 0: Abilities.PARENTAL_BOND },
[Species.RHYHORN]: { 0: Abilities.FILTER },
[Species.TANGELA]: { 0: Abilities.SEED_SOWER },
[Species.KANGASKHAN]: { 0: Abilities.GUTS },
[Species.KANGASKHAN]: { 0: Abilities.TECHNICIAN },
[Species.HORSEA]: { 0: Abilities.DRAGONS_MAW },
[Species.GOLDEEN]: { 0: Abilities.MULTISCALE },
[Species.STARYU]: { 0: Abilities.REGENERATOR },
@ -129,7 +129,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.RAIKOU]: { 0: Abilities.BEAST_BOOST },
[Species.ENTEI]: { 0: Abilities.BEAST_BOOST },
[Species.SUICUNE]: { 0: Abilities.BEAST_BOOST },
[Species.LARVITAR]: { 0: Abilities.SAND_RUSH },
[Species.LARVITAR]: { 0: Abilities.SOLID_ROCK },
[Species.LUGIA]: { 0: Abilities.DELTA_STREAM },
[Species.HO_OH]: { 0: Abilities.MAGIC_GUARD },
[Species.CELEBI]: { 0: Abilities.PSYCHIC_SURGE },
@ -246,11 +246,11 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.MANTYKE]: { 0: Abilities.UNAWARE },
[Species.SNOVER]: { 0: Abilities.GRASSY_SURGE },
[Species.ROTOM]: { 0: Abilities.HADRON_ENGINE },
[Species.UXIE]: { 0: Abilities.UNAWARE },
[Species.UXIE]: { 0: Abilities.UNNERVE },
[Species.MESPRIT]: { 0: Abilities.MOODY },
[Species.AZELF]: { 0: Abilities.NEUROFORCE },
[Species.DIALGA]: { 0: Abilities.LEVITATE },
[Species.PALKIA]: { 0: Abilities.SPEED_BOOST },
[Species.DIALGA]: { 0: Abilities.BERSERK },
[Species.PALKIA]: { 0: Abilities.BERSERK },
[Species.HEATRAN]: { 0: Abilities.EARTH_EATER },
[Species.REGIGIGAS]: { 0: Abilities.SCRAPPY },
[Species.GIRATINA]: { 0: Abilities.SHADOW_SHIELD },
@ -285,7 +285,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.SEWADDLE]: { 0: Abilities.SHARPNESS },
[Species.VENIPEDE]: { 0: Abilities.STAMINA },
[Species.COTTONEE]: { 0: Abilities.FLUFFY },
[Species.PETILIL]: { 0: Abilities.SIMPLE },
[Species.PETILIL]: { 0: Abilities.FLOWER_VEIL },
[Species.BASCULIN]: { 0: Abilities.SUPREME_OVERLORD },
[Species.SANDILE]: { 0: Abilities.TOUGH_CLAWS },
[Species.DARUMAKA]: { 0: Abilities.GORILLA_TACTICS },
@ -347,7 +347,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.CHESPIN]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.FENNEKIN]: { 0: Abilities.PSYCHIC_SURGE },
[Species.FROAKIE]: { 0: Abilities.STAKEOUT },
[Species.BUNNELBY]: { 0: Abilities.GUTS },
[Species.BUNNELBY]: { 0: Abilities.THICK_FAT },
[Species.FLETCHLING]: { 0: Abilities.MAGIC_GUARD },
[Species.SCATTERBUG]: { 0: Abilities.PRANKSTER },
[Species.LITLEO]: { 0: Abilities.BEAST_BOOST },
@ -380,7 +380,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.ZYGARDE]: { 0: Abilities.ADAPTABILITY },
[Species.DIANCIE]: { 0: Abilities.PRISM_ARMOR },
[Species.HOOPA]: { 0: Abilities.OPPORTUNIST },
[Species.VOLCANION]: { 0: Abilities.FILTER },
[Species.VOLCANION]: { 0: Abilities.NEUTRALIZING_GAS },
[Species.ETERNAL_FLOETTE]: { 0: Abilities.MAGIC_GUARD },
[Species.ROWLET]: { 0: Abilities.SNIPER },
@ -395,7 +395,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.ROCKRUFF]: { 0: Abilities.ROCKY_PAYLOAD },
[Species.WISHIWASHI]: { 0: Abilities.REGENERATOR },
[Species.MAREANIE]: { 0: Abilities.TOXIC_DEBRIS },
[Species.MUDBRAY]: { 0: Abilities.CUD_CHEW },
[Species.MUDBRAY]: { 0: Abilities.SAP_SIPPER },
[Species.DEWPIDER]: { 0: Abilities.TINTED_LENS },
[Species.FOMANTIS]: { 0: Abilities.SHARPNESS },
[Species.MORELULL]: { 0: Abilities.TRIAGE },
@ -419,8 +419,8 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.DHELMISE]: { 0: Abilities.WATER_BUBBLE },
[Species.JANGMO_O]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.TAPU_KOKO]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.TAPU_LELE]: { 0: Abilities.SHEER_FORCE },
[Species.TAPU_BULU]: { 0: Abilities.TRIAGE },
[Species.TAPU_LELE]: { 0: Abilities.BERSERK },
[Species.TAPU_BULU]: { 0: Abilities.FLOWER_VEIL },
[Species.TAPU_FINI]: { 0: Abilities.FAIRY_AURA },
[Species.COSMOG]: { 0: Abilities.BEAST_BOOST },
[Species.NIHILEGO]: { 0: Abilities.LEVITATE },
@ -542,7 +542,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.VAROOM]: { 0: Abilities.LEVITATE },
[Species.CYCLIZAR]: { 0: Abilities.PROTEAN },
[Species.ORTHWORM]: { 0: Abilities.REGENERATOR },
[Species.GLIMMET]: { 0: Abilities.LEVITATE },
[Species.GLIMMET]: { 0: Abilities.TERA_SHELL },
[Species.GREAVARD]: { 0: Abilities.UNAWARE },
[Species.FLAMIGO]: { 0: Abilities.MOXIE },
[Species.CETODDLE]: { 0: Abilities.REFRIGERATE },

View File

@ -92,6 +92,7 @@ export class SpeciesFormEvolution {
public item: EvolutionItem | null;
public condition: SpeciesEvolutionCondition | null;
public wildDelay: SpeciesWildEvolutionDelay;
public description: string = "";
constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
this.speciesId = speciesId;
@ -101,6 +102,23 @@ export class SpeciesFormEvolution {
this.item = item || EvolutionItem.NONE;
this.condition = condition;
this.wildDelay = wildDelay ?? SpeciesWildEvolutionDelay.NONE;
const strings: string[] = [];
if (this.level > 1) {
strings.push(i18next.t("pokemonEvolutions:level") + ` ${this.level}`);
}
if (this.item) {
const itemDescription = i18next.t(`modifierType:EvolutionItem.${EvolutionItem[this.item].toUpperCase()}`);
const rarity = this.item > 50 ? i18next.t("pokemonEvolutions:ULTRA") : i18next.t("pokemonEvolutions:GREAT");
strings.push(i18next.t("pokemonEvolutions:using") + itemDescription + ` (${rarity})`);
}
if (this.condition) {
strings.push(this.condition.description);
}
this.description = strings
.filter(str => str !== "")
.map((str, index) => index > 0 ? str[0].toLowerCase() + str.slice(1) : str)
.join(i18next.t("pokemonEvolutions:connector"));
}
}
@ -237,6 +255,7 @@ class WeatherEvolutionCondition extends SpeciesEvolutionCondition {
constructor(weatherTypes: WeatherType[]) {
super(() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1);
this.weatherTypes = weatherTypes;
this.description = i18next.t("pokemonEvolutions:weather");
}
}
@ -1377,7 +1396,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
],
[Species.TANDEMAUS]: [
new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new TandemausEvolutionCondition()),
new SpeciesEvolution(Species.MAUSHOLD, 25, null, null)
new SpeciesFormEvolution(Species.MAUSHOLD, "", "four", 25, null, null)
],
[Species.FIDOUGH]: [
new SpeciesEvolution(Species.DACHSBUN, 26, null, null)
@ -1540,7 +1559,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
],
[Species.DUNSPARCE]: [
new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new DunsparceEvolutionCondition(), SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.DUDUNSPARCE, 32, null, new MoveEvolutionCondition(Moves.HYPER_DRILL), SpeciesWildEvolutionDelay.LONG)
new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "two-segment", 32, null, new MoveEvolutionCondition(Moves.HYPER_DRILL), SpeciesWildEvolutionDelay.LONG)
],
[Species.GLIGAR]: [
new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new TimeOfDayEvolutionCondition("night") /* Razor fang at night*/, SpeciesWildEvolutionDelay.VERY_LONG)

View File

@ -128,7 +128,7 @@ export const speciesStarterCosts = {
[Species.YANMA]: 3,
[Species.WOOPER]: 2,
[Species.MURKROW]: 3,
[Species.MISDREAVUS]: 2,
[Species.MISDREAVUS]: 3,
[Species.UNOWN]: 1,
[Species.GIRAFARIG]: 3,
[Species.PINECO]: 2,
@ -245,7 +245,7 @@ export const speciesStarterCosts = {
[Species.KRICKETOT]: 1,
[Species.SHINX]: 2,
[Species.BUDEW]: 3,
[Species.CRANIDOS]: 3,
[Species.CRANIDOS]: 2,
[Species.SHIELDON]: 3,
[Species.BURMY]: 2,
[Species.COMBEE]: 2,
@ -274,7 +274,7 @@ export const speciesStarterCosts = {
[Species.FINNEON]: 1,
[Species.MANTYKE]: 2,
[Species.SNOVER]: 2,
[Species.ROTOM]: 5,
[Species.ROTOM]: 4,
[Species.UXIE]: 5,
[Species.MESPRIT]: 5,
[Species.AZELF]: 6,
@ -287,7 +287,7 @@ export const speciesStarterCosts = {
[Species.PHIONE]: 4,
[Species.MANAPHY]: 7,
[Species.DARKRAI]: 7,
[Species.SHAYMIN]: 5,
[Species.SHAYMIN]: 6,
[Species.ARCEUS]: 9,
[Species.VICTINI]: 7,

View File

@ -1752,7 +1752,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
super.onAdd(pokemon);
let highestStat: EffectiveStat;
EFFECTIVE_STATS.map(s => pokemon.getEffectiveStat(s)).reduce((highestValue: number, value: number, i: number) => {
EFFECTIVE_STATS.map(s => pokemon.getEffectiveStat(s, undefined, undefined, undefined, undefined, undefined, undefined, true)).reduce((highestValue: number, value: number, i: number) => {
if (value > highestValue) {
highestStat = EFFECTIVE_STATS[i];
return value;
@ -1763,15 +1763,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
highestStat = highestStat!; // tell TS compiler it's defined!
this.stat = highestStat;
switch (this.stat) {
case Stat.SPD:
this.multiplier = 1.5;
break;
default:
this.multiplier = 1.3;
break;
}
this.multiplier = this.stat === Stat.SPD ? 1.5 : 1.3;
globalScene.queueMessage(i18next.t("battlerTags:highestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: i18next.t(getStatKey(highestStat)) }), null, false, null, true);
}
@ -2871,7 +2863,7 @@ export class SyrupBombTag extends BattlerTag {
/**
* Telekinesis raises the target into the air for three turns and causes all moves used against the target (aside from OHKO moves) to hit the target unless the target is in a semi-invulnerable state from Fly/Dig.
* The first effect is provided by {@linkcode FloatingTag}, the accuracy-bypass effect is provided by TelekinesisTag
* The effects of Telekinesis can be baton passed to a teammate. Unlike the mainline games, Telekinesis can be baton-passed to Mega Gengar.
* The effects of Telekinesis can be baton passed to a teammate.
* @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | Moves.TELEKINESIS}
*/
export class TelekinesisTag extends BattlerTag {
@ -2983,6 +2975,24 @@ export class PsychoShiftTag extends BattlerTag {
}
}
/**
* Tag associated with the move Magic Coat.
*/
export class MagicCoatTag extends BattlerTag {
constructor() {
super(BattlerTagType.MAGIC_COAT, BattlerTagLapseType.TURN_END, 1, Moves.MAGIC_COAT);
}
/**
* Queues the "[PokemonName] shrouded itself with Magic Coat" message when the tag is added.
* @param pokemon - The target {@linkcode Pokemon}
*/
override onAdd(pokemon: Pokemon) {
// "{pokemonNameWithAffix} shrouded itself with Magic Coat!"
globalScene.queueMessage(i18next.t("battlerTags:magicCoatOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }));
}
}
/**
* Retrieves a {@linkcode BattlerTag} based on the provided tag type, turn count, source move, and source ID.
* @param sourceId - The ID of the pokemon adding the tag
@ -3172,6 +3182,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source
return new GrudgeTag();
case BattlerTagType.PSYCHO_SHIFT:
return new PsychoShiftTag();
case BattlerTagType.MAGIC_COAT:
return new MagicCoatTag();
case BattlerTagType.NONE:
default:
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);

View File

@ -44,7 +44,7 @@ import { SpeciesFormChangeRevertWeatherFormTrigger } from "./pokemon-forms";
import type { GameMode } from "#app/game-mode";
import { applyChallenges, ChallengeType } from "./challenge";
import { SwitchType } from "#enums/switch-type";
import { StatusEffect } from "enums/status-effect";
import { StatusEffect } from "#enums/status-effect";
import { globalScene } from "#app/global-scene";
export enum MoveCategory {
@ -125,7 +125,9 @@ export enum MoveFlags {
/** Indicates a move is able to bypass its target's Substitute (if the target has one) */
IGNORE_SUBSTITUTE = 1 << 17,
/** Indicates a move is able to be redirected to allies in a double battle if the attacker faints */
REDIRECT_COUNTER = 1 << 18,
REDIRECT_COUNTER = 1 << 18,
/** Indicates a move is able to be reflected by {@linkcode Abilities.MAGIC_BOUNCE} and {@linkcode Moves.MAGIC_COAT} */
REFLECTABLE = 1 << 19,
}
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
@ -610,6 +612,16 @@ export default class Move implements Localizable {
return this;
}
/**
* Sets the {@linkcode MoveFlags.REFLECTABLE} flag for the calling Move
* @see {@linkcode Moves.ATTRACT}
* @returns The {@linkcode Move} that called this function
*/
reflectable(): this {
this.setFlag(MoveFlags.REFLECTABLE, true);
return this;
}
/**
* Checks if the move flag applies to the pokemon(s) using/receiving the move
* @param flag {@linkcode MoveFlags} MoveFlag to check on user and/or target
@ -4368,6 +4380,69 @@ export class CueNextRoundAttr extends MoveEffectAttr {
}
}
/**
* Attribute that changes stat stages before the damage is calculated
*/
export class StatChangeBeforeDmgCalcAttr extends MoveAttr {
/**
* Applies Stat Changes before damage is calculated
*
* @param user {@linkcode Pokemon} that called {@linkcode move}
* @param target {@linkcode Pokemon} that is the target of {@linkcode move}
* @param move {@linkcode Move} called by {@linkcode user}
* @param args N/A
*
* @returns true if stat stages where correctly applied
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
return false;
}
}
/**
* Steals the postitive Stat stages of the target before damage calculation so stat changes
* apply to damage calculation (e.g. {@linkcode Moves.SPECTRAL_THIEF})
* {@link https://bulbapedia.bulbagarden.net/wiki/Spectral_Thief_(move) | Spectral Thief}
*/
export class SpectralThiefAttr extends StatChangeBeforeDmgCalcAttr {
/**
* steals max amount of positive stats of the target while not exceeding the limit of max 6 stat stages
*
* @param user {@linkcode Pokemon} that called {@linkcode move}
* @param target {@linkcode Pokemon} that is the target of {@linkcode move}
* @param move {@linkcode Move} called by {@linkcode user}
* @param args N/A
*
* @returns true if stat stages where correctly stolen
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
/**
* Copy all positive stat stages to user and reduce copied stat stages on target.
*/
for (const s of BATTLE_STATS) {
const statStageValueTarget = target.getStatStage(s);
const statStageValueUser = user.getStatStage(s);
if (statStageValueTarget > 0) {
/**
* Only value of up to 6 can be stolen (stat stages don't exceed 6)
*/
const availableToSteal = Math.min(statStageValueTarget, 6 - statStageValueUser);
globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ s ], availableToSteal));
target.setStatStage(s, statStageValueTarget - availableToSteal);
}
}
target.updateInfo();
user.updateInfo();
globalScene.queueMessage(i18next.t("moveTriggers:stealPositiveStats", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) }));
return true;
}
}
export class VariableAtkAttr extends MoveAttr {
constructor() {
super();
@ -4559,7 +4634,8 @@ export class TeraMoveCategoryAttr extends VariableMoveCategoryAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const category = (args[0] as Utils.NumberHolder);
if (user.isTerastallized() && user.getEffectiveStat(Stat.ATK, target, move) > user.getEffectiveStat(Stat.SPATK, target, move)) {
if (user.isTerastallized() && user.getEffectiveStat(Stat.ATK, target, move, true, true, false, false, true) >
user.getEffectiveStat(Stat.SPATK, target, move, true, true, false, false, true)) {
category.value = MoveCategory.PHYSICAL;
return true;
}
@ -5331,6 +5407,7 @@ export class AddBattlerTagAttr extends MoveEffectAttr {
case BattlerTagType.INGRAIN:
case BattlerTagType.IGNORE_ACCURACY:
case BattlerTagType.AQUA_RING:
case BattlerTagType.MAGIC_COAT:
return 3;
case BattlerTagType.PROTECTED:
case BattlerTagType.FLYING:
@ -8333,7 +8410,8 @@ export function initMoves() {
.attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH)
.ignoresSubstitute()
.hidesTarget()
.windMove(),
.windMove()
.reflectable(),
new ChargingAttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1)
.chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" }))
.chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING)
@ -8357,7 +8435,8 @@ export function initMoves() {
new AttackMove(Moves.ROLLING_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1)
.attr(FlinchAttr),
new StatusMove(Moves.SAND_ATTACK, Type.GROUND, 100, 15, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ACC ], -1),
.attr(StatStageChangeAttr, [ Stat.ACC ], -1)
.reflectable(),
new AttackMove(Moves.HEADBUTT, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1)
.attr(FlinchAttr),
new AttackMove(Moves.HORN_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1),
@ -8386,7 +8465,8 @@ export function initMoves() {
.recklessMove(),
new StatusMove(Moves.TAIL_WHIP, Type.NORMAL, 100, 30, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], -1)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.POISON_STING, Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON)
.makesContact(false),
@ -8399,30 +8479,36 @@ export function initMoves() {
.makesContact(false),
new StatusMove(Moves.LEER, Type.NORMAL, 100, 30, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], -1)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.BITE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1)
.attr(FlinchAttr)
.bitingMove(),
new StatusMove(Moves.GROWL, Type.NORMAL, 100, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.soundBased()
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1)
.attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH)
.soundBased()
.hidesTarget(),
.hidesTarget()
.reflectable(),
new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.soundBased(),
.soundBased()
.reflectable(),
new StatusMove(Moves.SUPERSONIC, Type.NORMAL, 55, 20, -1, 0, 1)
.attr(ConfuseAttr)
.soundBased(),
.soundBased()
.reflectable(),
new AttackMove(Moves.SONIC_BOOM, Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1)
.attr(FixedDamageAttr, 20),
new StatusMove(Moves.DISABLE, Type.NORMAL, 100, 20, -1, 0, 1)
.attr(AddBattlerTagAttr, BattlerTagType.DISABLED, false, true)
.condition((user, target, move) => target.getMoveHistory().reverse().find(m => m.move !== Moves.NONE && m.move !== Moves.STRUGGLE && !m.virtual) !== undefined)
.ignoresSubstitute(),
.ignoresSubstitute()
.reflectable(),
new AttackMove(Moves.ACID, Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -1)
.target(MoveTarget.ALL_NEAR_ENEMIES),
@ -8475,7 +8561,8 @@ export function initMoves() {
.triageMove(),
new StatusMove(Moves.LEECH_SEED, Type.GRASS, 90, 10, -1, 0, 1)
.attr(LeechSeedAttr)
.condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(Type.GRASS)),
.condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(Type.GRASS))
.reflectable(),
new SelfStatusMove(Moves.GROWTH, Type.NORMAL, -1, 20, -1, 0, 1)
.attr(GrowthStatStageChangeAttr),
new AttackMove(Moves.RAZOR_LEAF, Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1)
@ -8489,13 +8576,16 @@ export function initMoves() {
.attr(AntiSunlightPowerDecreaseAttr),
new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON)
.powderMove(),
.powderMove()
.reflectable(),
new StatusMove(Moves.STUN_SPORE, Type.GRASS, 75, 30, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.powderMove(),
.powderMove()
.reflectable(),
new StatusMove(Moves.SLEEP_POWDER, Type.GRASS, 75, 15, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.powderMove(),
.powderMove()
.reflectable(),
new AttackMove(Moves.PETAL_DANCE, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1)
.attr(FrenzyAttr)
.attr(MissEffectAttr, frenzyMissFunc)
@ -8505,7 +8595,8 @@ export function initMoves() {
.target(MoveTarget.RANDOM_NEAR_ENEMY),
new StatusMove(Moves.STRING_SHOT, Type.BUG, 95, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPD ], -2)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.DRAGON_RAGE, Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1)
.attr(FixedDamageAttr, 40),
new AttackMove(Moves.FIRE_SPIN, Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 1)
@ -8516,7 +8607,8 @@ export function initMoves() {
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new StatusMove(Moves.THUNDER_WAVE, Type.ELECTRIC, 90, 20, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.attr(RespectAttackTypeImmunityAttr),
.attr(RespectAttackTypeImmunityAttr)
.reflectable(),
new AttackMove(Moves.THUNDER, Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.attr(ThunderAccuracyAttr)
@ -8538,13 +8630,15 @@ export function initMoves() {
.chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND),
new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.TOXIC)
.attr(ToxicAccuracyAttr),
.attr(ToxicAccuracyAttr)
.reflectable(),
new AttackMove(Moves.CONFUSION, Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1)
.attr(ConfuseAttr),
new AttackMove(Moves.PSYCHIC, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -1),
new StatusMove(Moves.HYPNOSIS, Type.PSYCHIC, 60, 20, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP),
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.reflectable(),
new SelfStatusMove(Moves.MEDITATE, Type.PSYCHIC, -1, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ATK ], 1, true),
new SelfStatusMove(Moves.AGILITY, Type.PSYCHIC, -1, 30, -1, 0, 1)
@ -8562,7 +8656,8 @@ export function initMoves() {
.ignoresSubstitute(),
new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], -2)
.soundBased(),
.soundBased()
.reflectable(),
new SelfStatusMove(Moves.DOUBLE_TEAM, Type.NORMAL, -1, 15, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.EVA ], 1, true),
new SelfStatusMove(Moves.RECOVER, Type.NORMAL, -1, 5, -1, 0, 1)
@ -8574,9 +8669,11 @@ export function initMoves() {
.attr(AddBattlerTagAttr, BattlerTagType.MINIMIZED, true, false)
.attr(StatStageChangeAttr, [ Stat.EVA ], 2, true),
new StatusMove(Moves.SMOKESCREEN, Type.NORMAL, 100, 20, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ACC ], -1),
.attr(StatStageChangeAttr, [ Stat.ACC ], -1)
.reflectable(),
new StatusMove(Moves.CONFUSE_RAY, Type.GHOST, 100, 10, -1, 0, 1)
.attr(ConfuseAttr),
.attr(ConfuseAttr)
.reflectable(),
new SelfStatusMove(Moves.WITHDRAW, Type.WATER, -1, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], 1, true),
new SelfStatusMove(Moves.DEFENSE_CURL, Type.NORMAL, -1, 40, -1, 0, 1)
@ -8637,7 +8734,8 @@ export function initMoves() {
new SelfStatusMove(Moves.AMNESIA, Type.PSYCHIC, -1, 20, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], 2, true),
new StatusMove(Moves.KINESIS, Type.PSYCHIC, 80, 15, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ACC ], -1),
.attr(StatStageChangeAttr, [ Stat.ACC ], -1)
.reflectable(),
new SelfStatusMove(Moves.SOFT_BOILED, Type.NORMAL, -1, 5, -1, 0, 1)
.attr(HealAttr, 0.5)
.triageMove(),
@ -8647,14 +8745,16 @@ export function initMoves() {
.condition(failOnGravityCondition)
.recklessMove(),
new StatusMove(Moves.GLARE, Type.NORMAL, 100, 30, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.reflectable(),
new AttackMove(Moves.DREAM_EATER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1)
.attr(HitHealAttr)
.condition(targetSleptOrComatoseCondition)
.triageMove(),
new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.BARRAGE, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1)
.attr(MultiHitAttr)
.makesContact(false)
@ -8663,7 +8763,8 @@ export function initMoves() {
.attr(HitHealAttr)
.triageMove(),
new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP),
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.reflectable(),
new ChargingAttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1)
.chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" }))
.attr(HighCritAttr)
@ -8682,9 +8783,11 @@ export function initMoves() {
.punchingMove(),
new StatusMove(Moves.SPORE, Type.GRASS, 100, 15, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.powderMove(),
.powderMove()
.reflectable(),
new StatusMove(Moves.FLASH, Type.NORMAL, 100, 20, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ACC ], -1),
.attr(StatStageChangeAttr, [ Stat.ACC ], -1)
.reflectable(),
new AttackMove(Moves.PSYWAVE, Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1)
.attr(RandomLevelDamageAttr),
new SelfStatusMove(Moves.SPLASH, Type.NORMAL, -1, 40, -1, 0, 1)
@ -8743,7 +8846,8 @@ export function initMoves() {
.attr(StealHeldItemChanceAttr, 0.3),
new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2)
.condition(failIfGhostTypeCondition)
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1)
.reflectable(),
new StatusMove(Moves.MIND_READER, Type.NORMAL, -1, 5, -1, 0, 2)
.attr(IgnoreAccuracyAttr),
new StatusMove(Moves.NIGHTMARE, Type.GHOST, 100, 15, -1, 0, 2)
@ -8774,12 +8878,14 @@ export function initMoves() {
new StatusMove(Moves.COTTON_SPORE, Type.GRASS, 100, 40, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.SPD ], -2)
.powderMove()
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.REVERSAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2)
.attr(LowHpPowerAttr),
new StatusMove(Moves.SPITE, Type.GHOST, 100, 10, -1, 0, 2)
.ignoresSubstitute()
.attr(ReducePpMoveAttr, 4),
.attr(ReducePpMoveAttr, 4)
.reflectable(),
new AttackMove(Moves.POWDER_SNOW, Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2)
.attr(StatusEffectAttr, StatusEffect.FREEZE)
.target(MoveTarget.ALL_NEAR_ENEMIES),
@ -8789,10 +8895,12 @@ export function initMoves() {
new AttackMove(Moves.MACH_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2)
.punchingMove(),
new StatusMove(Moves.SCARY_FACE, Type.NORMAL, 100, 10, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.SPD ], -2),
.attr(StatStageChangeAttr, [ Stat.SPD ], -2)
.reflectable(),
new AttackMove(Moves.FEINT_ATTACK, Type.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2),
new StatusMove(Moves.SWEET_KISS, Type.FAIRY, 75, 10, -1, 0, 2)
.attr(ConfuseAttr),
.attr(ConfuseAttr)
.reflectable(),
new SelfStatusMove(Moves.BELLY_DRUM, Type.NORMAL, -1, 10, -1, 0, 2)
.attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => {
globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) }));
@ -8807,13 +8915,15 @@ export function initMoves() {
.ballBombMove(),
new StatusMove(Moves.SPIKES, Type.GROUND, -1, 20, -1, 0, 2)
.attr(AddArenaTrapTagAttr, ArenaTagType.SPIKES)
.target(MoveTarget.ENEMY_SIDE),
.target(MoveTarget.ENEMY_SIDE)
.reflectable(),
new AttackMove(Moves.ZAP_CANNON, Type.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, 100, 0, 2)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.ballBombMove(),
new StatusMove(Moves.FORESIGHT, Type.NORMAL, -1, 40, -1, 0, 2)
.attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST)
.ignoresSubstitute(),
.ignoresSubstitute()
.reflectable(),
new SelfStatusMove(Moves.DESTINY_BOND, Type.GHOST, -1, 5, -1, 0, 2)
.ignoresProtect()
.attr(DestinyBondAttr)
@ -8859,7 +8969,8 @@ export function initMoves() {
.attr(ProtectAttr, BattlerTagType.ENDURING)
.condition(failIfLastCondition),
new StatusMove(Moves.CHARM, Type.FAIRY, 100, 20, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.ATK ], -2),
.attr(StatStageChangeAttr, [ Stat.ATK ], -2)
.reflectable(),
new AttackMove(Moves.ROLLOUT, Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2)
.partial() // Does not lock the user, also does not increase damage properly
.attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL),
@ -8867,7 +8978,8 @@ export function initMoves() {
.attr(SurviveDamageAttr),
new StatusMove(Moves.SWAGGER, Type.NORMAL, 85, 15, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.ATK ], 2)
.attr(ConfuseAttr),
.attr(ConfuseAttr)
.reflectable(),
new SelfStatusMove(Moves.MILK_DRINK, Type.NORMAL, -1, 5, -1, 0, 2)
.attr(HealAttr, 0.5)
.triageMove(),
@ -8880,11 +8992,13 @@ export function initMoves() {
.attr(StatStageChangeAttr, [ Stat.DEF ], 1, true),
new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2)
.condition(failIfGhostTypeCondition)
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1)
.reflectable(),
new StatusMove(Moves.ATTRACT, Type.NORMAL, 100, 15, -1, 0, 2)
.attr(AddBattlerTagAttr, BattlerTagType.INFATUATED)
.ignoresSubstitute()
.condition((user, target, move) => user.isOppositeGender(target)),
.condition((user, target, move) => user.isOppositeGender(target))
.reflectable(),
new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2)
.attr(BypassSleepAttr)
.attr(RandomMovesetMoveAttr, invalidSleepTalkMoves, false)
@ -8931,7 +9045,8 @@ export function initMoves() {
new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2)
.attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true)
.ignoresSubstitute()
.condition((user, target, move) => new EncoreTag(user.id).canAdd(target)),
.condition((user, target, move) => new EncoreTag(user.id).canAdd(target))
.reflectable(),
new AttackMove(Moves.PURSUIT, Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2)
.partial(), // No effect implemented
new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2)
@ -8952,7 +9067,8 @@ export function initMoves() {
.attr(RemoveArenaTrapAttr),
new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.EVA ], -2)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.IRON_TAIL, Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2)
.attr(StatStageChangeAttr, [ Stat.DEF ], -1),
new AttackMove(Moves.METAL_CLAW, Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2)
@ -9040,12 +9156,15 @@ export function initMoves() {
new StatusMove(Moves.TORMENT, Type.DARK, 100, 15, -1, 0, 3)
.ignoresSubstitute()
.edgeCase() // Incomplete implementation because of Uproar's partial implementation
.attr(AddBattlerTagAttr, BattlerTagType.TORMENT, false, true, 1),
.attr(AddBattlerTagAttr, BattlerTagType.TORMENT, false, true, 1)
.reflectable(),
new StatusMove(Moves.FLATTER, Type.DARK, 100, 15, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPATK ], 1)
.attr(ConfuseAttr),
.attr(ConfuseAttr)
.reflectable(),
new StatusMove(Moves.WILL_O_WISP, Type.FIRE, 85, 15, -1, 0, 3)
.attr(StatusEffectAttr, StatusEffect.BURN),
.attr(StatusEffectAttr, StatusEffect.BURN)
.reflectable(),
new StatusMove(Moves.MEMENTO, Type.DARK, 100, 10, -1, 0, 3)
.attr(SacrificialAttrOnHit)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -2),
@ -9069,7 +9188,8 @@ export function initMoves() {
.attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false),
new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3)
.ignoresSubstitute()
.attr(AddBattlerTagAttr, BattlerTagType.TAUNT, false, true, 4),
.attr(AddBattlerTagAttr, BattlerTagType.TAUNT, false, true, 4)
.reflectable(),
new StatusMove(Moves.HELPING_HAND, Type.NORMAL, -1, 20, -1, 5, 3)
.attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND)
.ignoresSubstitute()
@ -9092,7 +9212,12 @@ export function initMoves() {
new AttackMove(Moves.SUPERPOWER, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1, true),
new SelfStatusMove(Moves.MAGIC_COAT, Type.PSYCHIC, -1, 15, -1, 4, 3)
.unimplemented(),
.attr(AddBattlerTagAttr, BattlerTagType.MAGIC_COAT, true, true, 0)
.condition(failIfLastCondition)
// Interactions with stomping tantrum, instruct, and other moves that
// rely on move history
// Also will not reflect roar / whirlwind if the target has ForceSwitchOutImmunityAbAttr
.edgeCase(),
new SelfStatusMove(Moves.RECYCLE, Type.NORMAL, -1, 10, -1, 0, 3)
.unimplemented(),
new AttackMove(Moves.REVENGE, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3)
@ -9101,7 +9226,8 @@ export function initMoves() {
.attr(RemoveScreensAttr),
new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3)
.attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true)
.condition((user, target, move) => !target.status && !target.isSafeguarded(user)),
.condition((user, target, move) => !target.status && !target.isSafeguarded(user))
.reflectable(),
new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.getHeldItems().filter(i => i.isTransferable).length > 0 ? 1.5 : 1)
.attr(RemoveHeldItemAttr, false),
@ -9145,7 +9271,8 @@ export function initMoves() {
.ballBombMove(),
new StatusMove(Moves.FEATHER_DANCE, Type.FLYING, 100, 15, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK ], -2)
.danceMove(),
.danceMove()
.reflectable(),
new StatusMove(Moves.TEETER_DANCE, Type.NORMAL, 100, 20, -1, 0, 3)
.attr(ConfuseAttr)
.danceMove()
@ -9191,7 +9318,8 @@ export function initMoves() {
.attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER)
.target(MoveTarget.PARTY),
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2),
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2)
.reflectable(),
new AttackMove(Moves.AIR_CUTTER, Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3)
.attr(HighCritAttr)
.slicingMove()
@ -9202,7 +9330,8 @@ export function initMoves() {
.attr(HealStatusEffectAttr, true, StatusEffect.FREEZE),
new StatusMove(Moves.ODOR_SLEUTH, Type.NORMAL, -1, 40, -1, 0, 3)
.attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST)
.ignoresSubstitute(),
.ignoresSubstitute()
.reflectable(),
new AttackMove(Moves.ROCK_TOMB, Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPD ], -1)
.makesContact(false),
@ -9211,12 +9340,15 @@ export function initMoves() {
.windMove(),
new StatusMove(Moves.METAL_SOUND, Type.STEEL, 85, 40, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2)
.soundBased(),
.soundBased()
.reflectable(),
new StatusMove(Moves.GRASS_WHISTLE, Type.GRASS, 55, 15, -1, 0, 3)
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.soundBased(),
.soundBased()
.reflectable(),
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1),
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1)
.reflectable(),
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true),
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
@ -9254,7 +9386,8 @@ export function initMoves() {
.attr(StatStageChangeAttr, [ Stat.DEF ], 2, true),
new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3)
.condition(failIfGhostTypeCondition)
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1)
.reflectable(),
new StatusMove(Moves.HOWL, Type.NORMAL, -1, 40, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK ], 1)
.soundBased()
@ -9317,7 +9450,8 @@ export function initMoves() {
.target(MoveTarget.BOTH_SIDES),
new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4)
.attr(ExposedMoveAttr, BattlerTagType.IGNORE_DARK)
.ignoresSubstitute(),
.ignoresSubstitute()
.reflectable(),
new AttackMove(Moves.WAKE_UP_SLAP, Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4)
.attr(MovePowerMultiplierAttr, (user, target, move) => targetSleptOrComatoseCondition(user, target, move) ? 2 : 1)
.attr(HealStatusEffectAttr, false, StatusEffect.SLEEP),
@ -9329,7 +9463,8 @@ export function initMoves() {
.ballBombMove(),
new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore")
.triageMove(),
.triageMove()
.condition(failIfLastInPartyCondition),
new AttackMove(Moves.BRINE, Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.getHpRatio() < 0.5 ? 2 : 1),
new AttackMove(Moves.NATURAL_GIFT, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 4)
@ -9363,6 +9498,7 @@ export function initMoves() {
new AttackMove(Moves.ASSURANCE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1),
new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4)
.reflectable()
.unimplemented(),
new AttackMove(Moves.FLING, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4)
.makesContact(false)
@ -9382,14 +9518,16 @@ export function initMoves() {
.attr(LessPPMorePowerAttr),
new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4)
.attr(AddBattlerTagAttr, BattlerTagType.HEAL_BLOCK, false, true, 5)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.WRING_OUT, Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4)
.attr(OpponentHighHpPowerAttr, 120)
.makesContact(),
new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(AddBattlerTagAttr, BattlerTagType.POWER_TRICK, true),
new StatusMove(Moves.GASTRO_ACID, Type.POISON, 100, 10, -1, 0, 4)
.attr(SuppressAbilitiesAttr),
.attr(SuppressAbilitiesAttr)
.reflectable(),
new StatusMove(Moves.LUCKY_CHANT, Type.NORMAL, -1, 30, -1, 0, 4)
.attr(AddArenaTagAttr, ArenaTagType.NO_CRIT, 5, true, true)
.target(MoveTarget.USER_SIDE),
@ -9411,12 +9549,14 @@ export function initMoves() {
new AttackMove(Moves.LAST_RESORT, Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4)
.attr(LastResortAttr),
new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4)
.attr(AbilityChangeAttr, Abilities.INSOMNIA),
.attr(AbilityChangeAttr, Abilities.INSOMNIA)
.reflectable(),
new AttackMove(Moves.SUCKER_PUNCH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4)
.condition((user, target, move) => globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct?
new StatusMove(Moves.TOXIC_SPIKES, Type.POISON, -1, 20, -1, 0, 4)
.attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES)
.target(MoveTarget.ENEMY_SIDE),
.target(MoveTarget.ENEMY_SIDE)
.reflectable(),
new StatusMove(Moves.HEART_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SwapStatStagesAttr, BATTLE_STATS)
.ignoresSubstitute(),
@ -9528,7 +9668,8 @@ export function initMoves() {
.attr(ClearTerrainAttr)
.attr(RemoveScreensAttr, false)
.attr(RemoveArenaTrapAttr, true)
.attr(RemoveArenaTagsAttr, [ ArenaTagType.MIST, ArenaTagType.SAFEGUARD ], false),
.attr(RemoveArenaTagsAttr, [ ArenaTagType.MIST, ArenaTagType.SAFEGUARD ], false)
.reflectable(),
new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4)
.attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5)
.ignoresProtect()
@ -9566,10 +9707,12 @@ export function initMoves() {
new StatusMove(Moves.CAPTIVATE, Type.NORMAL, 100, 20, -1, 0, 4)
.attr(StatStageChangeAttr, [ Stat.SPATK ], -2)
.condition((user, target, move) => target.isOppositeGender(user))
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new StatusMove(Moves.STEALTH_ROCK, Type.ROCK, -1, 20, -1, 0, 4)
.attr(AddArenaTrapTagAttr, ArenaTagType.STEALTH_ROCK)
.target(MoveTarget.ENEMY_SIDE),
.target(MoveTarget.ENEMY_SIDE)
.reflectable(),
new AttackMove(Moves.GRASS_KNOT, Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4)
.attr(WeightPowerAttr)
.makesContact(),
@ -9606,14 +9749,16 @@ export function initMoves() {
new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore")
.danceMove()
.triageMove(),
.triageMove()
.condition(failIfLastInPartyCondition),
new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4)
.attr(OpponentHighHpPowerAttr, 120),
new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4)
.attr(TrapAttr, BattlerTagType.MAGMA_STORM),
new StatusMove(Moves.DARK_VOID, Type.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new AttackMove(Moves.SEED_FLARE, Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2),
new AttackMove(Moves.OMINOUS_WIND, Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4)
@ -9653,7 +9798,8 @@ export function initMoves() {
.condition((_user, target, _move) => !(target.species.speciesId === Species.GENGAR && target.getFormKey() === "mega"))
.condition((_user, target, _move) => Utils.isNullOrUndefined(target.getTag(BattlerTagType.INGRAIN)) && Utils.isNullOrUndefined(target.getTag(BattlerTagType.IGNORE_FLYING)))
.attr(AddBattlerTagAttr, BattlerTagType.TELEKINESIS, false, true, 3)
.attr(AddBattlerTagAttr, BattlerTagType.FLOATING, false, true, 3),
.attr(AddBattlerTagAttr, BattlerTagType.FLOATING, false, true, 3)
.reflectable(),
new StatusMove(Moves.MAGIC_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5)
.ignoresProtect()
.target(MoveTarget.BOTH_SIDES)
@ -9686,7 +9832,8 @@ export function initMoves() {
.attr(ElectroBallPowerAttr)
.ballBombMove(),
new StatusMove(Moves.SOAK, Type.WATER, 100, 20, -1, 0, 5)
.attr(ChangeTypeAttr, Type.WATER),
.attr(ChangeTypeAttr, Type.WATER)
.reflectable(),
new AttackMove(Moves.FLAME_CHARGE, Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5)
.attr(StatStageChangeAttr, [ Stat.SPD ], 1, true),
new SelfStatusMove(Moves.COIL, Type.POISON, -1, 20, -1, 0, 5)
@ -9699,9 +9846,11 @@ export function initMoves() {
new AttackMove(Moves.FOUL_PLAY, Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5)
.attr(TargetAtkUserAtkAttr),
new StatusMove(Moves.SIMPLE_BEAM, Type.NORMAL, 100, 15, -1, 0, 5)
.attr(AbilityChangeAttr, Abilities.SIMPLE),
.attr(AbilityChangeAttr, Abilities.SIMPLE)
.reflectable(),
new StatusMove(Moves.ENTRAINMENT, Type.NORMAL, 100, 15, -1, 0, 5)
.attr(AbilityGiveAttr),
.attr(AbilityGiveAttr)
.reflectable(),
new StatusMove(Moves.AFTER_YOU, Type.NORMAL, -1, 15, -1, 0, 5)
.ignoresProtect()
.ignoresSubstitute()
@ -9739,7 +9888,8 @@ export function initMoves() {
new StatusMove(Moves.HEAL_PULSE, Type.PSYCHIC, -1, 10, -1, 0, 5)
.attr(HealAttr, 0.5, false, false)
.pulseMove()
.triageMove(),
.triageMove()
.reflectable(),
new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5)
.attr(
MovePowerMultiplierAttr,
@ -9942,7 +10092,8 @@ export function initMoves() {
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => target.isOfType(Type.GRASS) && target.isGrounded() }),
new StatusMove(Moves.STICKY_WEB, Type.BUG, -1, 20, -1, 0, 6)
.attr(AddArenaTrapTagAttr, ArenaTagType.STICKY_WEB)
.target(MoveTarget.ENEMY_SIDE),
.target(MoveTarget.ENEMY_SIDE)
.reflectable(),
new AttackMove(Moves.FELL_STINGER, Type.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6)
.attr(PostVictoryStatStageChangeAttr, [ Stat.ATK ], 3, true ),
new ChargingAttackMove(Moves.PHANTOM_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6)
@ -9950,10 +10101,12 @@ export function initMoves() {
.chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN)
.ignoresProtect(),
new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6)
.attr(AddTypeAttr, Type.GHOST),
.attr(AddTypeAttr, Type.GHOST)
.reflectable(),
new StatusMove(Moves.NOBLE_ROAR, Type.NORMAL, 100, 30, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1)
.soundBased(),
.soundBased()
.reflectable(),
new StatusMove(Moves.ION_DELUGE, Type.ELECTRIC, -1, 25, -1, 1, 6)
.attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE)
.target(MoveTarget.BOTH_SIDES),
@ -9962,7 +10115,8 @@ export function initMoves() {
.target(MoveTarget.ALL_NEAR_OTHERS)
.triageMove(),
new StatusMove(Moves.FORESTS_CURSE, Type.GRASS, 100, 20, -1, 0, 6)
.attr(AddTypeAttr, Type.GRASS),
.attr(AddTypeAttr, Type.GRASS)
.reflectable(),
new AttackMove(Moves.PETAL_BLIZZARD, Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6)
.windMove()
.makesContact(false)
@ -9976,9 +10130,11 @@ export function initMoves() {
new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, false, { trigger: MoveEffectTrigger.PRE_APPLY })
.attr(ForceSwitchOutAttr, true)
.soundBased(),
.soundBased()
.reflectable(),
new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6)
.attr(InvertStatsAttr),
.attr(InvertStatsAttr)
.reflectable(),
new AttackMove(Moves.DRAINING_KISS, Type.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6)
.attr(HitHealAttr, 0.75)
.makesContact()
@ -10017,10 +10173,12 @@ export function initMoves() {
.condition(failIfLastCondition),
new StatusMove(Moves.PLAY_NICE, Type.NORMAL, -1, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.ignoresSubstitute(),
.ignoresSubstitute()
.reflectable(),
new StatusMove(Moves.CONFIDE, Type.NORMAL, -1, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.SPATK ], -1)
.soundBased(),
.soundBased()
.reflectable(),
new AttackMove(Moves.DIAMOND_STORM, Type.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6)
.attr(StatStageChangeAttr, [ Stat.DEF ], 2, true, { firstTargetOnly: true })
.makesContact(false)
@ -10047,14 +10205,17 @@ export function initMoves() {
.condition(failIfSingleBattle)
.target(MoveTarget.NEAR_ALLY),
new StatusMove(Moves.EERIE_IMPULSE, Type.ELECTRIC, 100, 15, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.SPATK ], -2),
.attr(StatStageChangeAttr, [ Stat.SPATK ], -2)
.reflectable(),
new StatusMove(Moves.VENOM_DRENCH, Type.POISON, 100, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], -1, false, { condition: (user, target, move) => target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC })
.target(MoveTarget.ALL_NEAR_ENEMIES),
.target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6)
.attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true)
.ignoresSubstitute()
.powderMove(),
.powderMove()
.reflectable(),
new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6)
.chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" }))
.attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true),
@ -10076,7 +10237,8 @@ export function initMoves() {
.ignoresSubstitute()
.target(MoveTarget.NEAR_ALLY),
new StatusMove(Moves.BABY_DOLL_EYES, Type.FAIRY, 100, 30, -1, 1, 6)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1),
.attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.reflectable(),
new AttackMove(Moves.NUZZLE, Type.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new AttackMove(Moves.HOLD_BACK, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6)
@ -10220,13 +10382,15 @@ export function initMoves() {
.punchingMove(),
new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7)
.attr(BoostHealAttr, 0.5, 2 / 3, true, false, (user, target, move) => globalScene.arena.terrain?.terrainType === TerrainType.GRASSY)
.triageMove(),
.triageMove()
.reflectable(),
new AttackMove(Moves.HIGH_HORSEPOWER, Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7),
new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, -1, 0, 7)
.attr(HitHealAttr, null, Stat.ATK)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.condition((user, target, move) => target.getStatStage(Stat.ATK) > -6)
.triageMove(),
.triageMove()
.reflectable(),
new ChargingAttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7)
.chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" }))
.chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ])
@ -10236,10 +10400,12 @@ export function initMoves() {
.makesContact(false),
new StatusMove(Moves.SPOTLIGHT, Type.NORMAL, -1, 15, -1, 3, 7)
.attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, false)
.condition(failIfSingleBattle),
.condition(failIfSingleBattle)
.reflectable(),
new StatusMove(Moves.TOXIC_THREAD, Type.POISON, 100, 20, -1, 0, 7)
.attr(StatusEffectAttr, StatusEffect.POISON)
.attr(StatStageChangeAttr, [ Stat.SPD ], -1),
.attr(StatStageChangeAttr, [ Stat.SPD ], -1)
.reflectable(),
new SelfStatusMove(Moves.LASER_FOCUS, Type.NORMAL, -1, 30, -1, 0, 7)
.attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false),
new StatusMove(Moves.GEAR_UP, Type.STEEL, -1, 20, -1, 0, 7)
@ -10283,7 +10449,8 @@ export function initMoves() {
(user: Pokemon, target: Pokemon, move: Move) => isNonVolatileStatusEffect(target.status?.effect!)) // TODO: is this bang correct?
.attr(HealAttr, 0.5)
.attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects())
.triageMove(),
.triageMove()
.reflectable(),
new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7)
.danceMove()
.attr(MatchUserTypeAttr),
@ -10365,14 +10532,15 @@ export function initMoves() {
new AttackMove(Moves.PRISMATIC_LASER, Type.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7)
.attr(RechargeAttr),
new AttackMove(Moves.SPECTRAL_THIEF, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7)
.ignoresSubstitute()
.partial(), // Does not steal stats
.attr(SpectralThiefAttr)
.ignoresSubstitute(),
new AttackMove(Moves.SUNSTEEL_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7)
.ignoresAbilities(),
new AttackMove(Moves.MOONGEIST_BEAM, Type.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7)
.ignoresAbilities(),
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, -1, 0, 7)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1),
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1)
.reflectable(),
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
.attr(FlinchAttr),
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7)
@ -10429,9 +10597,8 @@ export function initMoves() {
new AttackMove(Moves.PIKA_PAPOW, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7)
.attr(FriendshipPowerAttr),
new AttackMove(Moves.BOUNCY_BUBBLE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7)
.attr(HitHealAttr) // Custom
.triageMove()
.target(MoveTarget.ALL_NEAR_ENEMIES),
.attr(HitHealAttr, 1)
.triageMove(),
new AttackMove(Moves.BUZZY_BUZZ, Type.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new AttackMove(Moves.SIZZLY_SLIDE, Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 7)
@ -10492,10 +10659,12 @@ export function initMoves() {
.condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== Moves.NO_RETREAT), // fails if the user is currently trapped by No Retreat
new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, -1, 0, 8)
.attr(StatStageChangeAttr, [ Stat.SPD ], -1)
.attr(AddBattlerTagAttr, BattlerTagType.TAR_SHOT, false),
.attr(AddBattlerTagAttr, BattlerTagType.TAR_SHOT, false)
.reflectable(),
new StatusMove(Moves.MAGIC_POWDER, Type.PSYCHIC, 100, 20, -1, 0, 8)
.attr(ChangeTypeAttr, Type.PSYCHIC)
.powderMove(),
.powderMove()
.reflectable(),
new AttackMove(Moves.DRAGON_DARTS, Type.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8)
.attr(MultiHitAttr, MultiHitType._2)
.makesContact(false)
@ -10672,6 +10841,7 @@ export function initMoves() {
.makesContact(false),
new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8)
.target(MoveTarget.ALL_NEAR_OTHERS)
.reflectable()
.unimplemented(),
new StatusMove(Moves.COACHING, Type.FIGHTING, -1, 10, -1, 0, 8)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1)
@ -10906,8 +11076,7 @@ export function initMoves() {
.attr(TeraMoveCategoryAttr)
.attr(TeraBlastTypeAttr)
.attr(TeraBlastPowerAttr)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, true, { condition: (user, target, move) => user.isTerastallized() && user.isOfType(Type.STELLAR) })
.partial(), /** Does not ignore abilities that affect stats, relevant in determining the move's category {@see TeraMoveCategoryAttr} */
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, true, { condition: (user, target, move) => user.isTerastallized() && user.isOfType(Type.STELLAR) }),
new SelfStatusMove(Moves.SILK_TRAP, Type.BUG, -1, 10, -1, 4, 9)
.attr(ProtectAttr, BattlerTagType.SILK_TRAP)
.condition(failIfLastCondition),
@ -10917,8 +11086,7 @@ export function initMoves() {
.attr(ConfuseAttr)
.recklessMove(),
new AttackMove(Moves.LAST_RESPECTS, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9)
.partial() // Counter resets every wave instead of on arena reset
.attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? globalScene.currentBattle.playerFaints : globalScene.currentBattle.enemyFaints, 100))
.attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 100))
.makesContact(false),
new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2),

View File

@ -148,7 +148,7 @@ export const DancingLessonsEncounter: MysteryEncounter =
// Adds a real Pokemon sprite to the field (required for the animation)
globalScene.getEnemyParty().forEach(enemyPokemon => {
globalScene.field.remove(enemyPokemon, true);
enemyPokemon.leaveField(true, true, true);
});
globalScene.currentBattle.enemyParty = [ oricorio ];
globalScene.field.add(oricorio);

View File

@ -41,8 +41,6 @@ export const FunAndGamesEncounter: MysteryEncounter =
.withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES)
.withSceneRequirement(new MoneyRequirement(0, 1.5)) // Cost equal to 1 Max Potion to play
.withAutoHideIntroVisuals(false)
// Allows using move without a visible enemy pokemon
.withBattleAnimationsWithoutTargets(true)
// The Wobbuffet won't use moves
.withSkipEnemyBattleTurns(true)
// Will skip COMMAND selection menu and go straight to FIGHT (move select) menu
@ -229,7 +227,7 @@ function handleLoseMinigame() {
// End the battle
if (wobbuffet) {
wobbuffet.hideInfo();
globalScene.field.remove(wobbuffet);
wobbuffet.leaveField();
}
transitionMysteryEncounterIntroVisuals(true, true);
globalScene.currentBattle.enemyParty = [];
@ -278,7 +276,7 @@ function handleNextTurn() {
// End the battle
wobbuffet.hideInfo();
globalScene.field.remove(wobbuffet);
wobbuffet.leaveField();
globalScene.currentBattle.enemyParty = [];
globalScene.currentBattle.mysteryEncounter!.doContinueEncounter = undefined;
leaveEncounterWithoutBattle(isHealPhase);

View File

@ -315,7 +315,7 @@ async function summonSafariPokemon() {
const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier);
if (ivScannerModifier) {
globalScene.pushPhase(new ScanIvsPhase(pokemon.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)));
globalScene.pushPhase(new ScanIvsPhase(pokemon.getBattlerIndex()));
}
}

View File

@ -168,6 +168,7 @@ async function doBiomeTransitionDialogueAndBattleInit() {
// Show dialogue and transition biome
await showEncounterText(`${namespace}:transport`);
await Promise.all([ animateBiomeChange(newBiome), transitionMysteryEncounterIntroVisuals() ]);
globalScene.updateBiomeWaveText();
globalScene.playBgm();
await showEncounterText(`${namespace}:attacked`);

View File

@ -575,7 +575,7 @@ function onGameOver() {
ease: "Sine.easeIn",
scale: 0.5,
onComplete: () => {
globalScene.field.remove(pokemon, true);
pokemon.leaveField(true, true, true);
}
});
}

View File

@ -164,7 +164,7 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig):
}
globalScene.getEnemyParty().forEach(enemyPokemon => {
globalScene.field.remove(enemyPokemon, true);
enemyPokemon.leaveField(true, true, true);
});
battle.enemyParty = [];
battle.double = doubleBattle;
@ -810,7 +810,7 @@ export function transitionMysteryEncounterIntroVisuals(hide: boolean = true, des
globalScene.field.remove(introVisuals, true);
enemyPokemon.forEach(pokemon => {
globalScene.field.remove(pokemon, true);
pokemon.leaveField(true, true, true);
});
globalScene.currentBattle.mysteryEncounter!.introVisuals = undefined;
@ -887,16 +887,21 @@ export function getRandomEncounterSpecies(level: number, isBoss: boolean = false
let bossSpecies: PokemonSpecies;
let isEventEncounter = false;
const eventEncounters = globalScene.eventManager.getEventEncounters();
let formIndex;
if (eventEncounters.length > 0 && randSeedInt(2) === 1) {
const eventEncounter = randSeedItem(eventEncounters);
const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, !eventEncounter.blockEvolution, isBoss, globalScene.gameMode);
isEventEncounter = true;
bossSpecies = getPokemonSpecies(levelSpecies);
formIndex = eventEncounter.formIndex;
} else {
bossSpecies = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, level, 0, getPartyLuckValue(globalScene.getPlayerParty()), isBoss);
}
const ret = new EnemyPokemon(bossSpecies, level, TrainerSlot.NONE, isBoss);
if (formIndex) {
ret.formIndex = formIndex;
}
//Reroll shiny for event encounters
if (isEventEncounter && !ret.shiny) {

View File

@ -592,7 +592,7 @@ export async function catchPokemon(pokemon: EnemyPokemon, pokeball: Phaser.GameO
};
const removePokemon = () => {
if (pokemon) {
globalScene.field.remove(pokemon, true);
pokemon.leaveField(false, true, true);
}
};
const addToParty = (slotIndex?: number) => {
@ -695,7 +695,7 @@ export async function doPokemonFlee(pokemon: EnemyPokemon): Promise<void> {
scale: pokemon.getSpriteScale(),
onComplete: () => {
pokemon.setVisible(false);
globalScene.field.remove(pokemon, true);
pokemon.leaveField(true, true, true);
showEncounterText(i18next.t("battle:pokemonFled", { pokemonName: pokemon.getNameToRender() }), null, 600, false)
.then(() => {
resolve();
@ -723,7 +723,7 @@ export function doPlayerFlee(pokemon: EnemyPokemon): Promise<void> {
scale: pokemon.getSpriteScale(),
onComplete: () => {
pokemon.setVisible(false);
globalScene.field.remove(pokemon, true);
pokemon.leaveField(true, true, true);
showEncounterText(i18next.t("battle:playerFled", { pokemonName: pokemon.getNameToRender() }), null, 600, false)
.then(() => {
resolve();

View File

@ -328,7 +328,8 @@ export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigge
this.move = move;
this.known = known;
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("") as unknown as string;
this.description = i18next.t("pokemonEvolutions:Forms.moveLearned", { move: i18next.t(`move:${moveKey}.name`) });
this.description = known ? i18next.t("pokemonEvolutions:Forms.moveLearned", { move: i18next.t(`move:${moveKey}.name`) }) :
i18next.t("pokemonEvolutions:Forms.moveForgotten", { move: i18next.t(`move:${moveKey}.name`) });
}
canChange(pokemon: Pokemon): boolean {
@ -755,23 +756,23 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)),
],
[Species.ARCEUS]: [
new SpeciesFormChange(Species.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.SKY_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.TOXIC_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.EARTH_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.STONE_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.INSECT_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.SPOOKY_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.IRON_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FLAME_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.SPLASH_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.MEADOW_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ZAP_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.MIND_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICICLE_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRACO_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DREAD_PLATE)),
new SpeciesFormChange(Species.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE))
new SpeciesFormChange(Species.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.SKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.TOXIC_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.EARTH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.STONE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.INSECT_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.SPOOKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.IRON_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FLAME_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.SPLASH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.MEADOW_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ZAP_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.MIND_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICICLE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRACO_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DREAD_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
new SpeciesFormChange(Species.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
],
[Species.DARMANITAN]: [
new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true),
@ -841,23 +842,23 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true)
],
[Species.SILVALLY]: [
new SpeciesFormChange(Species.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.FLYING_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.POISON_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.GROUND_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.ROCK_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.BUG_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.GHOST_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.STEEL_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FIRE_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.WATER_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.GRASS_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ELECTRIC_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.PSYCHIC_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICE_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRAGON_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_MEMORY)),
new SpeciesFormChange(Species.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY))
new SpeciesFormChange(Species.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.FLYING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.POISON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.GROUND_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.ROCK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.BUG_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.GHOST_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.STEEL_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FIRE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.WATER_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.GRASS_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ELECTRIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.PSYCHIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRAGON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))),
new SpeciesFormChange(Species.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM)))
],
[Species.MINIOR]: [
new SpeciesFormChange(Species.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true),

View File

@ -7,7 +7,7 @@ import i18next from "i18next";
import type { AnySound } from "#app/battle-scene";
import { globalScene } from "#app/global-scene";
import type { GameMode } from "#app/game-mode";
import type { StarterMoveset } from "#app/system/game-data";
import { DexAttr, type StarterMoveset } from "#app/system/game-data";
import * as Utils from "#app/utils";
import { uncatchableSpecies } from "#app/data/balance/biomes";
import { speciesEggMoves } from "#app/data/balance/egg-moves";
@ -32,6 +32,37 @@ export enum Region {
PALDEA
}
// TODO: this is horrible and will need to be removed once a refactor/cleanup of forms is executed.
export const normalForm: Species[] = [
Species.PIKACHU,
Species.RAICHU,
Species.EEVEE,
Species.JOLTEON,
Species.FLAREON,
Species.VAPOREON,
Species.ESPEON,
Species.UMBREON,
Species.LEAFEON,
Species.GLACEON,
Species.SYLVEON,
Species.PICHU,
Species.ROTOM,
Species.DIALGA,
Species.PALKIA,
Species.KYUREM,
Species.GENESECT,
Species.FROAKIE,
Species.FROGADIER,
Species.GRENINJA,
Species.ROCKRUFF,
Species.NECROZMA,
Species.MAGEARNA,
Species.MARSHADOW,
Species.CRAMORANT,
Species.ZARUDE,
Species.CALYREX
];
/**
* Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode Species} enum given
* @param species The species to fetch
@ -324,8 +355,8 @@ export abstract class PokemonSpeciesForm {
return ret;
}
getSpriteAtlasPath(female: boolean, formIndex?: number, shiny?: boolean, variant?: number): string {
const spriteId = this.getSpriteId(female, formIndex, shiny, variant).replace(/\_{2}/g, "/");
getSpriteAtlasPath(female: boolean, formIndex?: number, shiny?: boolean, variant?: number, back?: boolean): string {
const spriteId = this.getSpriteId(female, formIndex, shiny, variant, back).replace(/\_{2}/g, "/");
return `${/_[1-3]$/.test(spriteId) ? "variant/" : ""}${spriteId}`;
}
@ -346,8 +377,8 @@ export abstract class PokemonSpeciesForm {
return `${back ? "back__" : ""}${shiny && (!variantSet || (!variant && !variantSet[variant || 0])) ? "shiny__" : ""}${baseSpriteKey}${shiny && variantSet && variantSet[variant] === 2 ? `_${variant + 1}` : ""}`;
}
getSpriteKey(female: boolean, formIndex?: number, shiny?: boolean, variant?: number): string {
return `pkmn__${this.getSpriteId(female, formIndex, shiny, variant)}`;
getSpriteKey(female: boolean, formIndex?: number, shiny?: boolean, variant?: number, back?: boolean): string {
return `pkmn__${this.getSpriteId(female, formIndex, shiny, variant, back)}`;
}
abstract getFormSpriteKey(formIndex?: number): string;
@ -520,10 +551,10 @@ export abstract class PokemonSpeciesForm {
return true;
}
loadAssets(female: boolean, formIndex?: number, shiny?: boolean, variant?: Variant, startLoad?: boolean): Promise<void> {
loadAssets(female: boolean, formIndex?: number, shiny?: boolean, variant?: Variant, startLoad?: boolean, back?: boolean): Promise<void> {
return new Promise(resolve => {
const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant);
globalScene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant));
const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant, back);
globalScene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant, back));
globalScene.load.audio(`${this.getCryKey(formIndex)}`, `audio/${this.getCryKey(formIndex)}.m4a`);
globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => {
const originalWarn = console.warn;
@ -533,7 +564,7 @@ export abstract class PokemonSpeciesForm {
console.warn = originalWarn;
if (!(globalScene.anims.exists(spriteKey))) {
globalScene.anims.create({
key: this.getSpriteKey(female, formIndex, shiny, variant),
key: this.getSpriteKey(female, formIndex, shiny, variant, back),
frames: frameNames,
frameRate: 10,
repeat: -1
@ -541,7 +572,7 @@ export abstract class PokemonSpeciesForm {
} else {
globalScene.anims.get(spriteKey).frameRate = 10;
}
const spritePath = this.getSpriteAtlasPath(female, formIndex, shiny, variant).replace("variant/", "").replace(/_[1-3]$/, "");
const spritePath = this.getSpriteAtlasPath(female, formIndex, shiny, variant, back).replace("variant/", "").replace(/_[1-3]$/, "");
globalScene.loadPokemonVariantAssets(spriteKey, spritePath, variant).then(() => resolve());
});
if (startLoad) {
@ -690,6 +721,56 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
return this.name;
}
/**
* Find the name of species with proper attachments for regionals and separate starter forms (Floette, Ursaluna)
* @returns a string with the region name or other form name attached
*/
getExpandedSpeciesName(): string {
if (this.speciesId < 2000) {
return this.name; // Other special cases could be put here too
} else { // Everything beyond this point essentially follows the pattern of FORMNAME_SPECIES
return i18next.t(`pokemonForm:appendForm.${Species[this.speciesId].split("_")[0]}`, { pokemonName: this.name });
}
}
/**
* Find the form name for species with just one form (regional variants, Floette, Ursaluna)
* @param formIndex The form index to check (defaults to 0)
* @param append Whether to append the species name to the end (defaults to false)
* @returns the pokemon-form locale key for the single form name ("Alolan Form", "Eternal Flower" etc)
*/
getFormNameToDisplay(formIndex: number = 0, append: boolean = false): string {
const formKey = this.forms?.[formIndex!]?.formKey;
const formText = Utils.capitalizeString(formKey, "-", false, false) || "";
const speciesName = Utils.capitalizeString(Species[this.speciesId], "_", true, false);
let ret: string = "";
const region = this.getRegion();
if (this.speciesId === Species.ARCEUS) {
ret = i18next.t(`pokemonInfo:Type.${formText?.toUpperCase()}`);
} else if ([ SpeciesFormKey.MEGA, SpeciesFormKey.MEGA_X, SpeciesFormKey.MEGA_Y, SpeciesFormKey.PRIMAL, SpeciesFormKey.GIGANTAMAX, SpeciesFormKey.GIGANTAMAX_RAPID, SpeciesFormKey.GIGANTAMAX_SINGLE, SpeciesFormKey.ETERNAMAX ].includes(formKey as SpeciesFormKey)) {
return i18next.t(`battlePokemonForm:${formKey}`, { pokemonName: (append ? this.name : "") });
} else if (region === Region.NORMAL || (this.speciesId === Species.GALAR_DARMANITAN && formIndex > 0) || this.speciesId === Species.PALDEA_TAUROS) { // More special cases can be added here
const i18key = `pokemonForm:${speciesName}${formText}`;
if (i18next.exists(i18key)) {
ret = i18next.t(i18key);
} else {
const rootSpeciesName = Utils.capitalizeString(Species[this.getRootSpeciesId()], "_", true, false);
const i18RootKey = `pokemonForm:${rootSpeciesName}${formText}`;
ret = i18next.exists(i18RootKey) ? i18next.t(i18RootKey) : formText;
}
} else if (append) { // Everything beyond this has an expanded name
return this.getExpandedSpeciesName();
} else if (this.speciesId === Species.ETERNAL_FLOETTE) { // Not a real form, so the key is made up
return i18next.t("pokemonForm:floetteEternalFlower");
} else if (this.speciesId === Species.BLOODMOON_URSALUNA) { // Not a real form, so the key is made up
return i18next.t("pokemonForm:ursalunaBloodmoon");
} else { // Only regional forms should be left at this point
return i18next.t(`pokemonForm:regionalForm.${Region[region]}`);
}
return append ? i18next.t("pokemonForm:appendForm.GENERIC", { pokemonName: this.name, formName: ret }) : ret;
}
localize(): void {
this.name = i18next.t(`pokemon:${Species[this.speciesId].toLowerCase()}`);
}
@ -947,25 +1028,55 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
? this.forms[formIndex || 0].getFormSpriteKey()
: "";
}
/**
* Generates a {@linkcode bigint} corresponding to the maximum unlocks possible for this species,
* taking into account if the species has a male/female gender, and which variants are implemented.
* @returns {@linkcode bigint} Maximum unlocks, can be compared with {@linkcode DexEntry.caughtAttr}.
*/
getFullUnlocksData(): bigint {
let caughtAttr: bigint = 0n;
caughtAttr += DexAttr.NON_SHINY;
caughtAttr += DexAttr.SHINY;
if (this.malePercent !== null) {
if (this.malePercent > 0) {
caughtAttr += DexAttr.MALE;
}
if (this.malePercent < 100) {
caughtAttr += DexAttr.FEMALE;
}
}
caughtAttr += DexAttr.DEFAULT_VARIANT;
if (this.hasVariants()) {
caughtAttr += DexAttr.VARIANT_2;
caughtAttr += DexAttr.VARIANT_3;
}
caughtAttr += DexAttr.DEFAULT_FORM;
return caughtAttr;
}
}
export class PokemonForm extends PokemonSpeciesForm {
public formName: string;
public formKey: string;
public formSpriteKey: string | null;
public isUnobtainable: boolean;
// This is a collection of form keys that have in-run form changes, but should still be separately selectable from the start screen
private starterSelectableKeys: string[] = [ "10", "50", "10-pc", "50-pc", "red", "orange", "yellow", "green", "blue", "indigo", "violet" ];
constructor(formName: string, formKey: string, type1: Type, type2: Type | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities,
baseTotal: number, baseHp: number, baseAtk: number, baseDef: number, baseSpatk: number, baseSpdef: number, baseSpd: number,
catchRate: number, baseFriendship: number, baseExp: number, genderDiffs: boolean = false, formSpriteKey: string | null = null, isStarterSelectable: boolean = false
catchRate: number, baseFriendship: number, baseExp: number, genderDiffs: boolean = false, formSpriteKey: string | null = null, isStarterSelectable: boolean = false,
isUnobtainable: boolean = false
) {
super(type1, type2, height, weight, ability1, ability2, abilityHidden, baseTotal, baseHp, baseAtk, baseDef, baseSpatk, baseSpdef, baseSpd,
catchRate, baseFriendship, baseExp, genderDiffs, (isStarterSelectable || !formKey));
this.formName = formName;
this.formKey = formKey;
this.formSpriteKey = formSpriteKey;
this.isUnobtainable = isUnobtainable;
}
getFormSpriteKey(_formIndex?: number) {
@ -1027,15 +1138,15 @@ export function initSpecies() {
),
new PokemonSpecies(Species.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", Type.BUG, Type.POISON, 0.3, 3.2, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.KAKUNA, 1, false, false, false, "Cocoon Pokémon", Type.BUG, Type.POISON, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", Type.BUG, Type.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 178, GrowthRate.MEDIUM_FAST, 50, false, true,
new PokemonForm("Normal", "", Type.BUG, Type.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 178, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.BUG, Type.POISON, 1.4, 40.5, Abilities.ADAPTABILITY, Abilities.NONE, Abilities.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 178),
new PokemonSpecies(Species.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", Type.BUG, Type.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true,
new PokemonForm("Normal", "", Type.BUG, Type.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.BUG, Type.POISON, 1.4, 40.5, Abilities.ADAPTABILITY, Abilities.NONE, Abilities.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198),
),
new PokemonSpecies(Species.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", Type.NORMAL, Type.FLYING, 0.3, 1.8, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", Type.NORMAL, Type.FLYING, 1.1, 30, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.PIDGEOT, 1, false, false, false, "Bird Pokémon", Type.NORMAL, Type.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 216, GrowthRate.MEDIUM_SLOW, 50, false, true,
new PokemonForm("Normal", "", Type.NORMAL, Type.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 216, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, Type.FLYING, 2.2, 50.5, Abilities.NO_GUARD, Abilities.NO_GUARD, Abilities.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 216),
new PokemonSpecies(Species.PIDGEOT, 1, false, false, false, "Bird Pokémon", Type.NORMAL, Type.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true,
new PokemonForm("Normal", "", Type.NORMAL, Type.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, Type.FLYING, 2.2, 50.5, Abilities.NO_GUARD, Abilities.NO_GUARD, Abilities.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240),
),
new PokemonSpecies(Species.RATTATA, 1, false, false, false, "Mouse Pokémon", Type.NORMAL, null, 0.3, 3.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.RATICATE, 1, false, false, false, "Mouse Pokémon", Type.NORMAL, null, 0.7, 18.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true),
@ -1108,12 +1219,12 @@ export function initSpecies() {
),
new PokemonSpecies(Species.BELLSPROUT, 1, false, false, false, "Flower Pokémon", Type.GRASS, Type.POISON, 0.7, 4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", Type.GRASS, Type.POISON, 1, 6.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", Type.GRASS, Type.POISON, 1.7, 15.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 221, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", Type.GRASS, Type.POISON, 1.7, 15.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", Type.WATER, Type.POISON, 0.9, 45.5, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", Type.WATER, Type.POISON, 1.6, 55, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.GEODUDE, 1, false, false, false, "Rock Pokémon", Type.ROCK, Type.GROUND, 0.4, 20, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.GRAVELER, 1, false, false, false, "Rock Pokémon", Type.ROCK, Type.GROUND, 1, 105, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.GOLEM, 1, false, false, false, "Megaton Pokémon", Type.ROCK, Type.GROUND, 1.4, 300, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.GOLEM, 1, false, false, false, "Megaton Pokémon", Type.ROCK, Type.GROUND, 1.4, 300, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.PONYTA, 1, false, false, false, "Fire Horse Pokémon", Type.FIRE, null, 1, 30, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", Type.FIRE, null, 1.7, 95, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", Type.WATER, Type.PSYCHIC, 1.2, 36, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false),
@ -1227,13 +1338,13 @@ export function initSpecies() {
new PokemonSpecies(Species.MEW, 1, false, false, true, "New Species Pokémon", Type.PSYCHIC, null, 0.4, 4, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false),
new PokemonSpecies(Species.CHIKORITA, 2, false, false, false, "Leaf Pokémon", Type.GRASS, null, 0.9, 6.4, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.BAYLEEF, 2, false, false, false, "Leaf Pokémon", Type.GRASS, null, 1.2, 15.8, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.MEGANIUM, 2, false, false, false, "Herb Pokémon", Type.GRASS, null, 1.8, 100.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 236, GrowthRate.MEDIUM_SLOW, 87.5, true),
new PokemonSpecies(Species.MEGANIUM, 2, false, false, false, "Herb Pokémon", Type.GRASS, null, 1.8, 100.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true),
new PokemonSpecies(Species.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", Type.FIRE, null, 0.5, 7.9, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.QUILAVA, 2, false, false, false, "Volcano Pokémon", Type.FIRE, null, 0.9, 19, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", Type.FIRE, null, 1.7, 79.5, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", Type.FIRE, null, 1.7, 79.5, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 0.6, 9.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 1.1, 25, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 2.3, 88.8, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 2.3, 88.8, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.SENTRET, 2, false, false, false, "Scout Pokémon", Type.NORMAL, null, 0.8, 6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.FURRET, 2, false, false, false, "Long Body Pokémon", Type.NORMAL, null, 1.8, 32.5, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.HOOTHOOT, 2, false, false, false, "Owl Pokémon", Type.NORMAL, Type.FLYING, 0.7, 21.2, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false),
@ -1257,9 +1368,9 @@ export function initSpecies() {
new PokemonSpecies(Species.XATU, 2, false, false, false, "Mystic Pokémon", Type.PSYCHIC, Type.FLYING, 1.5, 15, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.MAREEP, 2, false, false, false, "Wool Pokémon", Type.ELECTRIC, null, 0.6, 7.8, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.FLAAFFY, 2, false, false, false, "Wool Pokémon", Type.ELECTRIC, null, 0.8, 13.3, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.AMPHAROS, 2, false, false, false, "Light Pokémon", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false, true,
new PokemonForm("Normal", "", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 230, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ELECTRIC, Type.DRAGON, 1.4, 61.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 230),
new PokemonSpecies(Species.AMPHAROS, 2, false, false, false, "Light Pokémon", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true,
new PokemonForm("Normal", "", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ELECTRIC, Type.DRAGON, 1.4, 61.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255),
),
new PokemonSpecies(Species.BELLOSSOM, 2, false, false, false, "Flower Pokémon", Type.GRASS, null, 0.4, 5.8, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", Type.WATER, Type.FAIRY, 0.4, 8.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false),
@ -1268,7 +1379,7 @@ export function initSpecies() {
new PokemonSpecies(Species.POLITOED, 2, false, false, false, "Frog Pokémon", Type.WATER, null, 1.1, 33.9, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true),
new PokemonSpecies(Species.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.4, 0.5, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.6, 1, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.8, 3, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 207, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.8, 3, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.AIPOM, 2, false, false, false, "Long Tail Pokémon", Type.NORMAL, null, 0.8, 11.5, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true),
new PokemonSpecies(Species.SUNKERN, 2, false, false, false, "Seed Pokémon", Type.GRASS, null, 0.3, 1.8, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.SUNFLORA, 2, false, false, false, "Sun Pokémon", Type.GRASS, null, 0.8, 8.5, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false),
@ -1362,7 +1473,7 @@ export function initSpecies() {
new PokemonSpecies(Species.ELEKID, 2, false, false, false, "Electric Pokémon", Type.ELECTRIC, null, 0.6, 23.5, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false),
new PokemonSpecies(Species.MAGBY, 2, false, false, false, "Live Coal Pokémon", Type.FIRE, null, 0.7, 21.4, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false),
new PokemonSpecies(Species.MILTANK, 2, false, false, false, "Milk Cow Pokémon", Type.NORMAL, null, 1.2, 75.5, Abilities.THICK_FAT, Abilities.SCRAPPY, Abilities.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false),
new PokemonSpecies(Species.BLISSEY, 2, false, false, false, "Happiness Pokémon", Type.NORMAL, null, 1.5, 46.8, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 635, GrowthRate.FAST, 0, false),
new PokemonSpecies(Species.BLISSEY, 2, false, false, false, "Happiness Pokémon", Type.NORMAL, null, 1.5, 46.8, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false),
new PokemonSpecies(Species.RAIKOU, 2, true, false, false, "Thunder Pokémon", Type.ELECTRIC, null, 1.9, 178, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.ENTEI, 2, true, false, false, "Volcano Pokémon", Type.FIRE, null, 2.1, 198, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.SUICUNE, 2, true, false, false, "Aurora Pokémon", Type.WATER, null, 2, 187, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false),
@ -1399,9 +1510,9 @@ export function initSpecies() {
new PokemonSpecies(Species.LINOONE, 3, false, false, false, "Rushing Pokémon", Type.NORMAL, null, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.WURMPLE, 3, false, false, false, "Worm Pokémon", Type.BUG, null, 0.3, 3.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.SILCOON, 3, false, false, false, "Cocoon Pokémon", Type.BUG, null, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", Type.BUG, Type.FLYING, 1, 28.4, Abilities.SWARM, Abilities.NONE, Abilities.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 178, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", Type.BUG, Type.FLYING, 1, 28.4, Abilities.SWARM, Abilities.NONE, Abilities.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.CASCOON, 3, false, false, false, "Cocoon Pokémon", Type.BUG, null, 0.7, 11.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", Type.BUG, Type.POISON, 1.2, 31.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 173, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", Type.BUG, Type.POISON, 1.2, 31.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.LOTAD, 3, false, false, false, "Water Weed Pokémon", Type.WATER, Type.GRASS, 0.5, 2.6, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.LOMBRE, 3, false, false, false, "Jolly Pokémon", Type.WATER, Type.GRASS, 1.2, 32.5, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.LUDICOLO, 3, false, false, false, "Carefree Pokémon", Type.WATER, Type.GRASS, 1.5, 55, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true),
@ -1424,7 +1535,7 @@ export function initSpecies() {
new PokemonSpecies(Species.BRELOOM, 3, false, false, false, "Mushroom Pokémon", Type.GRASS, Type.FIGHTING, 1.2, 39.2, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false),
new PokemonSpecies(Species.SLAKOTH, 3, false, false, false, "Slacker Pokémon", Type.NORMAL, null, 0.8, 24, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden
new PokemonSpecies(Species.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", Type.NORMAL, null, 1.4, 46.5, Abilities.VITAL_SPIRIT, Abilities.NONE, Abilities.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden
new PokemonSpecies(Species.SLAKING, 3, false, false, false, "Lazy Pokémon", Type.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 252, GrowthRate.SLOW, 50, false), //Custom Hidden
new PokemonSpecies(Species.SLAKING, 3, false, false, false, "Lazy Pokémon", Type.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden
new PokemonSpecies(Species.NINCADA, 3, false, false, false, "Trainee Pokémon", Type.BUG, Type.GROUND, 0.5, 5.5, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false),
new PokemonSpecies(Species.NINJASK, 3, false, false, false, "Ninja Pokémon", Type.BUG, Type.FLYING, 0.8, 12, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false),
new PokemonSpecies(Species.SHEDINJA, 3, false, false, false, "Shed Pokémon", Type.BUG, Type.GHOST, 0.8, 1.2, Abilities.WONDER_GUARD, Abilities.NONE, Abilities.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false),
@ -1580,24 +1691,24 @@ export function initSpecies() {
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.FLYING, 10.8, 392, Abilities.DELTA_STREAM, Abilities.NONE, Abilities.NONE, 780, 105, 180, 100, 180, 100, 115, 45, 0, 340),
),
new PokemonSpecies(Species.JIRACHI, 3, false, false, true, "Wish Pokémon", Type.STEEL, Type.PSYCHIC, 0.3, 1.1, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.DEOXYS, 3, false, false, true, "DNA Pokémon", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 270, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal Forme", "normal", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 270, false, "", true),
new PokemonForm("Attack Forme", "attack", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 270),
new PokemonForm("Defense Forme", "defense", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 270),
new PokemonForm("Speed Forme", "speed", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 270),
new PokemonSpecies(Species.DEOXYS, 3, false, false, true, "DNA Pokémon", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal Forme", "normal", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true),
new PokemonForm("Attack Forme", "attack", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300),
new PokemonForm("Defense Forme", "defense", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300),
new PokemonForm("Speed Forme", "speed", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300),
),
new PokemonSpecies(Species.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", Type.GRASS, null, 0.4, 10.2, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.GROTLE, 4, false, false, false, "Grove Pokémon", Type.GRASS, null, 1.1, 97, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.TORTERRA, 4, false, false, false, "Continent Pokémon", Type.GRASS, Type.GROUND, 2.2, 310, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 236, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.TORTERRA, 4, false, false, false, "Continent Pokémon", Type.GRASS, Type.GROUND, 2.2, 310, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", Type.FIRE, null, 0.5, 6.2, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.MONFERNO, 4, false, false, false, "Playful Pokémon", Type.FIRE, Type.FIGHTING, 0.9, 22, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.INFERNAPE, 4, false, false, false, "Flame Pokémon", Type.FIRE, Type.FIGHTING, 1.2, 55, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.INFERNAPE, 4, false, false, false, "Flame Pokémon", Type.FIRE, Type.FIGHTING, 1.2, 55, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.PIPLUP, 4, false, false, false, "Penguin Pokémon", Type.WATER, null, 0.4, 5.2, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.PRINPLUP, 4, false, false, false, "Penguin Pokémon", Type.WATER, null, 0.8, 23, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.EMPOLEON, 4, false, false, false, "Emperor Pokémon", Type.WATER, Type.STEEL, 1.7, 84.5, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.EMPOLEON, 4, false, false, false, "Emperor Pokémon", Type.WATER, Type.STEEL, 1.7, 84.5, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.STARLY, 4, false, false, false, "Starling Pokémon", Type.NORMAL, Type.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true),
new PokemonSpecies(Species.STARAVIA, 4, false, false, false, "Starling Pokémon", Type.NORMAL, Type.FLYING, 0.6, 15.5, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true),
new PokemonSpecies(Species.STARAPTOR, 4, false, false, false, "Predator Pokémon", Type.NORMAL, Type.FLYING, 1.2, 24.9, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 218, GrowthRate.MEDIUM_SLOW, 50, true),
new PokemonSpecies(Species.STARAPTOR, 4, false, false, false, "Predator Pokémon", Type.NORMAL, Type.FLYING, 1.2, 24.9, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true),
new PokemonSpecies(Species.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", Type.NORMAL, null, 0.5, 20, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.BIBAREL, 4, false, false, false, "Beaver Pokémon", Type.NORMAL, Type.WATER, 1, 31.5, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true),
new PokemonSpecies(Species.KRICKETOT, 4, false, false, false, "Cricket Pokémon", Type.BUG, null, 0.3, 2.2, Abilities.SHED_SKIN, Abilities.NONE, Abilities.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true),
@ -1712,11 +1823,11 @@ export function initSpecies() {
new PokemonSpecies(Species.FROSLASS, 4, false, false, false, "Snow Land Pokémon", Type.ICE, Type.GHOST, 1.3, 26.6, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false),
new PokemonSpecies(Species.ROTOM, 4, false, false, false, "Plasma Pokémon", Type.ELECTRIC, Type.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false,
new PokemonForm("Normal", "", Type.ELECTRIC, Type.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true),
new PokemonForm("Heat", "heat", Type.ELECTRIC, Type.FIRE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 154, false, null, true),
new PokemonForm("Wash", "wash", Type.ELECTRIC, Type.WATER, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 154, false, null, true),
new PokemonForm("Frost", "frost", Type.ELECTRIC, Type.ICE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 154, false, null, true),
new PokemonForm("Fan", "fan", Type.ELECTRIC, Type.FLYING, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 154, false, null, true),
new PokemonForm("Mow", "mow", Type.ELECTRIC, Type.GRASS, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 154, false, null, true),
new PokemonForm("Heat", "heat", Type.ELECTRIC, Type.FIRE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true),
new PokemonForm("Wash", "wash", Type.ELECTRIC, Type.WATER, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true),
new PokemonForm("Frost", "frost", Type.ELECTRIC, Type.ICE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true),
new PokemonForm("Fan", "fan", Type.ELECTRIC, Type.FLYING, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true),
new PokemonForm("Mow", "mow", Type.ELECTRIC, Type.GRASS, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true),
),
new PokemonSpecies(Species.UXIE, 4, true, false, false, "Knowledge Pokémon", Type.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.MESPRIT, 4, true, false, false, "Emotion Pokémon", Type.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false),
@ -1736,44 +1847,44 @@ export function initSpecies() {
new PokemonForm("Origin Forme", "origin", Type.GHOST, Type.DRAGON, 6.9, 650, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340),
),
new PokemonSpecies(Species.CRESSELIA, 4, true, false, false, "Lunar Pokémon", Type.PSYCHIC, null, 1.5, 85.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false),
new PokemonSpecies(Species.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", Type.WATER, null, 0.4, 3.1, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 216, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.MANAPHY, 4, false, false, true, "Seafaring Pokémon", Type.WATER, null, 0.3, 1.4, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 270, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", Type.DARK, null, 1.5, 50.5, Abilities.BAD_DREAMS, Abilities.NONE, Abilities.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 270, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", Type.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 270, GrowthRate.MEDIUM_SLOW, null, false, true,
new PokemonForm("Land Forme", "land", Type.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 270, false, null, true),
new PokemonForm("Sky Forme", "sky", Type.GRASS, Type.FLYING, 0.4, 5.2, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 270),
new PokemonSpecies(Species.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", Type.WATER, null, 0.4, 3.1, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.MANAPHY, 4, false, false, true, "Seafaring Pokémon", Type.WATER, null, 0.3, 1.4, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", Type.DARK, null, 1.5, 50.5, Abilities.BAD_DREAMS, Abilities.NONE, Abilities.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", Type.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true,
new PokemonForm("Land Forme", "land", Type.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true),
new PokemonForm("Sky Forme", "sky", Type.GRASS, Type.FLYING, 0.4, 5.2, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300),
),
new PokemonSpecies(Species.ARCEUS, 4, false, false, true, "Alpha Pokémon", Type.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "normal", Type.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324, false, null, true),
new PokemonForm("Fighting", "fighting", Type.FIGHTING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Flying", "flying", Type.FLYING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Poison", "poison", Type.POISON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Ground", "ground", Type.GROUND, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Rock", "rock", Type.ROCK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Bug", "bug", Type.BUG, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Ghost", "ghost", Type.GHOST, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Steel", "steel", Type.STEEL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Fire", "fire", Type.FIRE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Water", "water", Type.WATER, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Grass", "grass", Type.GRASS, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Electric", "electric", Type.ELECTRIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Psychic", "psychic", Type.PSYCHIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Ice", "ice", Type.ICE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Dragon", "dragon", Type.DRAGON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Dark", "dark", Type.DARK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("Fairy", "fairy", Type.FAIRY, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonForm("???", "unknown", Type.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324),
new PokemonSpecies(Species.ARCEUS, 4, false, false, true, "Alpha Pokémon", Type.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "normal", Type.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true),
new PokemonForm("Fighting", "fighting", Type.FIGHTING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Flying", "flying", Type.FLYING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Poison", "poison", Type.POISON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Ground", "ground", Type.GROUND, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Rock", "rock", Type.ROCK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Bug", "bug", Type.BUG, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Ghost", "ghost", Type.GHOST, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Steel", "steel", Type.STEEL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Fire", "fire", Type.FIRE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Water", "water", Type.WATER, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Grass", "grass", Type.GRASS, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Electric", "electric", Type.ELECTRIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Psychic", "psychic", Type.PSYCHIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Ice", "ice", Type.ICE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Dragon", "dragon", Type.DRAGON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Dark", "dark", Type.DARK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("Fairy", "fairy", Type.FAIRY, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360),
new PokemonForm("???", "unknown", Type.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true),
),
new PokemonSpecies(Species.VICTINI, 5, false, false, true, "Victory Pokémon", Type.PSYCHIC, Type.FIRE, 0.4, 4, Abilities.VICTORY_STAR, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.SNIVY, 5, false, false, false, "Grass Snake Pokémon", Type.GRASS, null, 0.6, 8.1, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.SERVINE, 5, false, false, false, "Grass Snake Pokémon", Type.GRASS, null, 0.8, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.SERPERIOR, 5, false, false, false, "Regal Pokémon", Type.GRASS, null, 3.3, 63, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 238, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.SERPERIOR, 5, false, false, false, "Regal Pokémon", Type.GRASS, null, 3.3, 63, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.TEPIG, 5, false, false, false, "Fire Pig Pokémon", Type.FIRE, null, 0.5, 9.9, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", Type.FIRE, Type.FIGHTING, 1, 55.5, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", Type.FIRE, Type.FIGHTING, 1.6, 150, Abilities.BLAZE, Abilities.NONE, Abilities.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 238, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", Type.FIRE, Type.FIGHTING, 1.6, 150, Abilities.BLAZE, Abilities.NONE, Abilities.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", Type.WATER, null, 0.5, 5.9, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.DEWOTT, 5, false, false, false, "Discipline Pokémon", Type.WATER, null, 0.8, 24.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.SAMUROTT, 5, false, false, false, "Formidable Pokémon", Type.WATER, null, 1.5, 94.6, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 238, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.SAMUROTT, 5, false, false, false, "Formidable Pokémon", Type.WATER, null, 1.5, 94.6, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.PATRAT, 5, false, false, false, "Scout Pokémon", Type.NORMAL, null, 0.5, 11.6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.WATCHOG, 5, false, false, false, "Lookout Pokémon", Type.NORMAL, null, 1.1, 27, Abilities.ILLUMINATE, Abilities.KEEN_EYE, Abilities.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.LILLIPUP, 5, false, false, false, "Puppy Pokémon", Type.NORMAL, null, 0.4, 4.1, Abilities.VITAL_SPIRIT, Abilities.PICKUP, Abilities.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false),
@ -1815,7 +1926,7 @@ export function initSpecies() {
new PokemonSpecies(Species.SAWK, 5, false, false, false, "Karate Pokémon", Type.FIGHTING, null, 1.4, 51, Abilities.STURDY, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false),
new PokemonSpecies(Species.SEWADDLE, 5, false, false, false, "Sewing Pokémon", Type.BUG, Type.GRASS, 0.3, 2.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", Type.BUG, Type.GRASS, 0.5, 7.3, Abilities.LEAF_GUARD, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", Type.BUG, Type.GRASS, 1.2, 20.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 225, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", Type.BUG, Type.GRASS, 1.2, 20.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.VENIPEDE, 5, false, false, false, "Centipede Pokémon", Type.BUG, Type.POISON, 0.4, 5.3, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", Type.BUG, Type.POISON, 1.2, 58.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", Type.BUG, Type.POISON, 2.5, 200.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false),
@ -1834,7 +1945,7 @@ export function initSpecies() {
new PokemonSpecies(Species.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", Type.FIRE, null, 0.6, 37.5, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.DARMANITAN, 5, false, false, false, "Blazing Pokémon", Type.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true,
new PokemonForm("Standard Mode", "", Type.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true),
new PokemonForm("Zen Mode", "zen", Type.FIRE, Type.PSYCHIC, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 168),
new PokemonForm("Zen Mode", "zen", Type.FIRE, Type.PSYCHIC, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189),
),
new PokemonSpecies(Species.MARACTUS, 5, false, false, false, "Cactus Pokémon", Type.GRASS, null, 1, 28, Abilities.WATER_ABSORB, Abilities.CHLOROPHYLL, Abilities.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", Type.BUG, Type.ROCK, 0.3, 14.5, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false),
@ -1897,7 +2008,7 @@ export function initSpecies() {
new PokemonSpecies(Species.KLINKLANG, 5, false, false, false, "Gear Pokémon", Type.STEEL, null, 0.6, 81, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false),
new PokemonSpecies(Species.TYNAMO, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 0.2, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 1.2, 22, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 2.1, 80.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 232, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 2.1, 80.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.ELGYEM, 5, false, false, false, "Cerebral Pokémon", Type.PSYCHIC, null, 0.5, 9, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", Type.PSYCHIC, null, 1, 34.5, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.LITWICK, 5, false, false, false, "Candle Pokémon", Type.GHOST, Type.FIRE, 0.3, 3.1, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false),
@ -1950,16 +2061,16 @@ export function initSpecies() {
),
new PokemonSpecies(Species.KYUREM, 5, false, true, false, "Boundary Pokémon", Type.DRAGON, Type.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "", Type.DRAGON, Type.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true),
new PokemonForm("Black", "black", Type.DRAGON, Type.ICE, 3.3, 325, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 330),
new PokemonForm("White", "white", Type.DRAGON, Type.ICE, 3.6, 325, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 330),
new PokemonForm("Black", "black", Type.DRAGON, Type.ICE, 3.3, 325, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350),
new PokemonForm("White", "white", Type.DRAGON, Type.ICE, 3.6, 325, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350),
),
new PokemonSpecies(Species.KELDEO, 5, false, false, true, "Colt Pokémon", Type.WATER, Type.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true,
new PokemonForm("Ordinary Form", "ordinary", Type.WATER, Type.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true),
new PokemonForm("Resolute", "resolute", Type.WATER, Type.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290),
),
new PokemonSpecies(Species.MELOETTA, 5, false, false, true, "Melody Pokémon", Type.NORMAL, Type.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 270, GrowthRate.SLOW, null, false, true,
new PokemonForm("Aria Forme", "aria", Type.NORMAL, Type.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 270, false, null, true),
new PokemonForm("Pirouette Forme", "pirouette", Type.NORMAL, Type.FIGHTING, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 270, false, null, true),
new PokemonSpecies(Species.MELOETTA, 5, false, false, true, "Melody Pokémon", Type.NORMAL, Type.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true,
new PokemonForm("Aria Forme", "aria", Type.NORMAL, Type.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true),
new PokemonForm("Pirouette Forme", "pirouette", Type.NORMAL, Type.FIGHTING, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true),
),
new PokemonSpecies(Species.GENESECT, 5, false, false, true, "Paleozoic Pokémon", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true),
@ -1970,10 +2081,10 @@ export function initSpecies() {
),
new PokemonSpecies(Species.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", Type.GRASS, null, 0.4, 9, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", Type.GRASS, null, 0.7, 29, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", Type.GRASS, Type.FIGHTING, 1.6, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", Type.GRASS, Type.FIGHTING, 1.6, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 0.4, 9.4, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.BRAIXEN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 1, 14.5, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", Type.FIRE, Type.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", Type.FIRE, Type.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false,
new PokemonForm("Normal", "", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true),
@ -1982,10 +2093,10 @@ export function initSpecies() {
new PokemonForm("Normal", "", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true),
),
new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false, false,
new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, false, null, true),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, false, "", true),
new PokemonForm("Ash", "ash", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 640, 72, 145, 67, 153, 71, 132, 45, 70, 239),
new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false,
new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true),
new PokemonForm("Ash", "ash", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265),
),
new PokemonSpecies(Species.BUNNELBY, 6, false, false, false, "Digging Pokémon", Type.NORMAL, null, 0.4, 5, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.DIGGERSBY, 6, false, false, false, "Digging Pokémon", Type.NORMAL, Type.GROUND, 1, 42.4, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false),
@ -2036,27 +2147,27 @@ export function initSpecies() {
new PokemonForm("Fancy Pattern", "fancy", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true),
new PokemonForm("Poké Ball Pattern", "poke-ball", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true),
),
new PokemonSpecies(Species.VIVILLON, 6, false, false, false, "Scale Pokémon", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, GrowthRate.MEDIUM_FAST, 50, false, false,
new PokemonForm("Meadow Pattern", "meadow", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Icy Snow Pattern", "icy-snow", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Polar Pattern", "polar", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Tundra Pattern", "tundra", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Continental Pattern", "continental", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Garden Pattern", "garden", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Elegant Pattern", "elegant", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Modern Pattern", "modern", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Marine Pattern", "marine", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Archipelago Pattern", "archipelago", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("High Plains Pattern", "high-plains", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Sandstorm Pattern", "sandstorm", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("River Pattern", "river", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Monsoon Pattern", "monsoon", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Savanna Pattern", "savanna", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Sun Pattern", "sun", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Ocean Pattern", "ocean", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Jungle Pattern", "jungle", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Fancy Pattern", "fancy", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonForm("Poké Ball Pattern", "poke-ball", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 185, false, null, true),
new PokemonSpecies(Species.VIVILLON, 6, false, false, false, "Scale Pokémon", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false,
new PokemonForm("Meadow Pattern", "meadow", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Icy Snow Pattern", "icy-snow", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Polar Pattern", "polar", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Tundra Pattern", "tundra", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Continental Pattern", "continental", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Garden Pattern", "garden", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Elegant Pattern", "elegant", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Modern Pattern", "modern", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Marine Pattern", "marine", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Archipelago Pattern", "archipelago", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("High Plains Pattern", "high-plains", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Sandstorm Pattern", "sandstorm", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("River Pattern", "river", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Monsoon Pattern", "monsoon", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Savanna Pattern", "savanna", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Sun Pattern", "sun", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Ocean Pattern", "ocean", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Jungle Pattern", "jungle", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Fancy Pattern", "fancy", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
new PokemonForm("Poké Ball Pattern", "poke-ball", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true),
),
new PokemonSpecies(Species.LITLEO, 6, false, false, false, "Lion Cub Pokémon", Type.FIRE, Type.NORMAL, 0.6, 13.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false),
new PokemonSpecies(Species.PYROAR, 6, false, false, false, "Royal Pokémon", Type.FIRE, Type.NORMAL, 1.5, 81.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true),
@ -2074,12 +2185,12 @@ export function initSpecies() {
new PokemonForm("Blue Flower", "blue", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true),
new PokemonForm("White Flower", "white", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true),
),
new PokemonSpecies(Species.FLORGES, 6, false, false, false, "Garden Pokémon", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 248, GrowthRate.MEDIUM_FAST, 0, false, false,
new PokemonForm("Red Flower", "red", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 248, false, null, true),
new PokemonForm("Yellow Flower", "yellow", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 248, false, null, true),
new PokemonForm("Orange Flower", "orange", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 248, false, null, true),
new PokemonForm("Blue Flower", "blue", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 248, false, null, true),
new PokemonForm("White Flower", "white", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 248, false, null, true),
new PokemonSpecies(Species.FLORGES, 6, false, false, false, "Garden Pokémon", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false,
new PokemonForm("Red Flower", "red", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true),
new PokemonForm("Yellow Flower", "yellow", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true),
new PokemonForm("Orange Flower", "orange", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true),
new PokemonForm("Blue Flower", "blue", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true),
new PokemonForm("White Flower", "white", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true),
),
new PokemonSpecies(Species.SKIDDO, 6, false, false, false, "Mount Pokémon", Type.GRASS, null, 0.9, 31, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.GOGOAT, 6, false, false, false, "Mount Pokémon", Type.GRASS, null, 1.7, 91, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false),
@ -2159,19 +2270,19 @@ export function initSpecies() {
new PokemonSpecies(Species.YVELTAL, 6, false, true, false, "Destruction Pokémon", Type.DARK, Type.FLYING, 5.8, 203, Abilities.DARK_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.ZYGARDE, 6, false, true, false, "Order Pokémon", Type.DRAGON, Type.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false,
new PokemonForm("50% Forme", "50", Type.DRAGON, Type.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true),
new PokemonForm("10% Forme", "10", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 300, false, null, true),
new PokemonForm("10% Forme", "10", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true),
new PokemonForm("50% Forme Power Construct", "50-pc", Type.DRAGON, Type.GROUND, 5, 305, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true),
new PokemonForm("10% Forme Power Construct", "10-pc", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 300, false, "10", true),
new PokemonForm("Complete Forme (50% PC)", "complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 300),
new PokemonForm("Complete Forme (10% PC)", "10-complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 300, false, "complete"),
new PokemonForm("10% Forme Power Construct", "10-pc", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true),
new PokemonForm("Complete Forme (50% PC)", "complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354),
new PokemonForm("Complete Forme (10% PC)", "10-complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete"),
),
new PokemonSpecies(Species.DIANCIE, 6, false, false, true, "Jewel Pokémon", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true),
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.FAIRY, 1.1, 27.8, Abilities.MAGIC_BOUNCE, Abilities.NONE, Abilities.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300),
),
new PokemonSpecies(Species.HOOPA, 6, false, false, true, "Mischief Pokémon", Type.PSYCHIC, Type.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 270, GrowthRate.SLOW, null, false, false,
new PokemonForm("Hoopa Confined", "", Type.PSYCHIC, Type.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 270, false, null, true),
new PokemonForm("Hoopa Unbound", "unbound", Type.PSYCHIC, Type.DARK, 6.5, 490, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 270),
new PokemonSpecies(Species.HOOPA, 6, false, false, true, "Mischief Pokémon", Type.PSYCHIC, Type.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false,
new PokemonForm("Hoopa Confined", "", Type.PSYCHIC, Type.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true),
new PokemonForm("Hoopa Unbound", "unbound", Type.PSYCHIC, Type.DARK, 6.5, 490, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340),
),
new PokemonSpecies(Species.VOLCANION, 6, false, false, true, "Steam Pokémon", Type.FIRE, Type.WATER, 1.7, 195, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.ROWLET, 7, false, false, false, "Grass Quill Pokémon", Type.GRASS, Type.FLYING, 0.3, 1.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false),
@ -2185,7 +2296,7 @@ export function initSpecies() {
new PokemonSpecies(Species.PRIMARINA, 7, false, false, false, "Soloist Pokémon", Type.WATER, Type.FAIRY, 1.8, 44, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", Type.NORMAL, Type.FLYING, 0.3, 1.2, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", Type.NORMAL, Type.FLYING, 0.6, 14.8, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.TOUCANNON, 7, false, false, false, "Cannon Pokémon", Type.NORMAL, Type.FLYING, 1.1, 26, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 218, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.TOUCANNON, 7, false, false, false, "Cannon Pokémon", Type.NORMAL, Type.FLYING, 1.1, 26, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.YUNGOOS, 7, false, false, false, "Loitering Pokémon", Type.NORMAL, null, 0.4, 6, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", Type.NORMAL, null, 0.7, 14.2, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.GRUBBIN, 7, false, false, false, "Larva Pokémon", Type.BUG, null, 0.4, 4.4, Abilities.SWARM, Abilities.NONE, Abilities.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false),
@ -2212,7 +2323,7 @@ export function initSpecies() {
),
new PokemonSpecies(Species.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", Type.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false,
new PokemonForm("Solo Form", "", Type.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true),
new PokemonForm("School", "school", Type.WATER, null, 8.2, 78.6, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 61),
new PokemonForm("School", "school", Type.WATER, null, 8.2, 78.6, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217),
),
new PokemonSpecies(Species.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", Type.POISON, Type.WATER, 0.4, 8, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", Type.POISON, Type.WATER, 0.7, 14.5, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false),
@ -2268,13 +2379,13 @@ export function initSpecies() {
new PokemonForm("Blue Meteor Form", "blue-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true),
new PokemonForm("Indigo Meteor Form", "indigo-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true),
new PokemonForm("Violet Meteor Form", "violet-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true),
new PokemonForm("Red Core Form", "red", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Orange Core Form", "orange", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Yellow Core Form", "yellow", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Green Core Form", "green", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Blue Core Form", "blue", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Indigo Core Form", "indigo", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Violet Core Form", "violet", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 154, false, null, true),
new PokemonForm("Red Core Form", "red", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
new PokemonForm("Orange Core Form", "orange", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
new PokemonForm("Yellow Core Form", "yellow", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
new PokemonForm("Green Core Form", "green", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
new PokemonForm("Blue Core Form", "blue", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
new PokemonForm("Indigo Core Form", "indigo", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
new PokemonForm("Violet Core Form", "violet", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true),
),
new PokemonSpecies(Species.KOMALA, 7, false, false, false, "Drowsing Pokémon", Type.NORMAL, null, 0.4, 19.9, Abilities.COMATOSE, Abilities.NONE, Abilities.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", Type.FIRE, Type.DRAGON, 2, 212, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false),
@ -2306,9 +2417,9 @@ export function initSpecies() {
new PokemonSpecies(Species.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", Type.DARK, Type.DRAGON, 5.5, 888, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.NECROZMA, 7, false, true, false, "Prism Pokémon", Type.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, GrowthRate.SLOW, null, false, false,
new PokemonForm("Normal", "", Type.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, false, null, true),
new PokemonForm("Dusk Mane", "dusk-mane", Type.PSYCHIC, Type.STEEL, 3.8, 460, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 300),
new PokemonForm("Dawn Wings", "dawn-wings", Type.PSYCHIC, Type.GHOST, 4.2, 350, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 300),
new PokemonForm("Ultra", "ultra", Type.PSYCHIC, Type.DRAGON, 7.5, 230, Abilities.NEUROFORCE, Abilities.NONE, Abilities.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 300),
new PokemonForm("Dusk Mane", "dusk-mane", Type.PSYCHIC, Type.STEEL, 3.8, 460, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 340),
new PokemonForm("Dawn Wings", "dawn-wings", Type.PSYCHIC, Type.GHOST, 4.2, 350, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 340),
new PokemonForm("Ultra", "ultra", Type.PSYCHIC, Type.DRAGON, 7.5, 230, Abilities.NEUROFORCE, Abilities.NONE, Abilities.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 377),
),
new PokemonSpecies(Species.MAGEARNA, 7, false, false, true, "Artificial Pokémon", Type.STEEL, Type.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false,
new PokemonForm("Normal", "", Type.STEEL, Type.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true),
@ -2316,7 +2427,7 @@ export function initSpecies() {
),
new PokemonSpecies(Species.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true),
new PokemonForm("Zenith", "zenith", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300)
new PokemonForm("Zenith", "zenith", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true)
),
new PokemonSpecies(Species.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", Type.POISON, null, 0.6, 1.8, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", Type.POISON, Type.DRAGON, 3.6, 150, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false),
@ -2415,11 +2526,11 @@ export function initSpecies() {
new PokemonSpecies(Species.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", Type.FIGHTING, null, 1.6, 39, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false),
new PokemonSpecies(Species.SINISTEA, 8, false, false, false, "Black Tea Pokémon", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false,
new PokemonForm("Phony Form", "phony", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true),
new PokemonForm("Antique Form", "antique", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true),
new PokemonForm("Antique Form", "antique", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true, true),
),
new PokemonSpecies(Species.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false,
new PokemonForm("Phony Form", "phony", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true),
new PokemonForm("Antique Form", "antique", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true),
new PokemonForm("Antique Form", "antique", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true, true),
),
new PokemonSpecies(Species.HATENNA, 8, false, false, false, "Calm Pokémon", Type.PSYCHIC, null, 0.4, 3.4, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false),
new PokemonSpecies(Species.HATTREM, 8, false, false, false, "Serene Pokémon", Type.PSYCHIC, null, 0.6, 4.8, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false),
@ -2487,11 +2598,11 @@ export function initSpecies() {
new PokemonSpecies(Species.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", Type.DRAGON, Type.GHOST, 3, 50, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.ZACIAN, 8, false, true, false, "Warrior Pokémon", Type.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false,
new PokemonForm("Hero of Many Battles", "hero-of-many-battles", Type.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true),
new PokemonForm("Crowned", "crowned", Type.FAIRY, Type.STEEL, 2.8, 355, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 335),
new PokemonForm("Crowned", "crowned", Type.FAIRY, Type.STEEL, 2.8, 355, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360),
),
new PokemonSpecies(Species.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", Type.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false,
new PokemonForm("Hero of Many Battles", "hero-of-many-battles", Type.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true),
new PokemonForm("Crowned", "crowned", Type.FIGHTING, Type.STEEL, 2.9, 785, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 335),
new PokemonForm("Crowned", "crowned", Type.FIGHTING, Type.STEEL, 2.9, 785, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360),
),
new PokemonSpecies(Species.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true),
@ -2514,8 +2625,8 @@ export function initSpecies() {
new PokemonSpecies(Species.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", Type.GHOST, null, 2, 44.5, Abilities.GRIM_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.CALYREX, 8, false, true, false, "King Pokémon", Type.PSYCHIC, Type.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true,
new PokemonForm("Normal", "", Type.PSYCHIC, Type.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true),
new PokemonForm("Ice", "ice", Type.PSYCHIC, Type.ICE, 2.4, 809.1, Abilities.AS_ONE_GLASTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 250),
new PokemonForm("Shadow", "shadow", Type.PSYCHIC, Type.GHOST, 2.4, 53.6, Abilities.AS_ONE_SPECTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 250),
new PokemonForm("Ice", "ice", Type.PSYCHIC, Type.ICE, 2.4, 809.1, Abilities.AS_ONE_GLASTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340),
new PokemonForm("Shadow", "shadow", Type.PSYCHIC, Type.GHOST, 2.4, 53.6, Abilities.AS_ONE_SPECTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340),
),
new PokemonSpecies(Species.WYRDEER, 8, false, false, false, "Big Horn Pokémon", Type.NORMAL, Type.PSYCHIC, 1.8, 95.1, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 135, 50, 263, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.KLEAVOR, 8, false, false, false, "Axe Pokémon", Type.BUG, Type.ROCK, 1.8, 89, Abilities.SWARM, Abilities.SHEER_FORCE, Abilities.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 115, 50, 175, GrowthRate.MEDIUM_FAST, 50, false),
@ -2700,8 +2811,8 @@ export function initSpecies() {
new PokemonSpecies(Species.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", Type.STEEL, Type.PSYCHIC, 1.6, 156, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.TERAPAGOS, 9, false, true, false, "Tera Pokémon", Type.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false,
new PokemonForm("Normal Form", "", Type.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true),
new PokemonForm("Terastal Form", "terastal", Type.NORMAL, null, 0.3, 16, Abilities.TERA_SHELL, Abilities.NONE, Abilities.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 90),
new PokemonForm("Stellar Form", "stellar", Type.NORMAL, null, 1.7, 77, Abilities.TERAFORM_ZERO, Abilities.NONE, Abilities.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 90),
new PokemonForm("Terastal Form", "terastal", Type.NORMAL, null, 0.3, 16, Abilities.TERA_SHELL, Abilities.NONE, Abilities.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120),
new PokemonForm("Stellar Form", "stellar", Type.NORMAL, null, 1.7, 77, Abilities.TERAFORM_ZERO, Abilities.NONE, Abilities.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140),
),
new PokemonSpecies(Species.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", Type.POISON, Type.GHOST, 0.3, 0.3, Abilities.POISON_PUPPETEER, Abilities.NONE, Abilities.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false),
new PokemonSpecies(Species.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", Type.DARK, Type.NORMAL, 0.3, 3.8, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false),
@ -2722,7 +2833,7 @@ export function initSpecies() {
new PokemonSpecies(Species.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", Type.POISON, Type.DARK, 1, 52, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", Type.GRASS, Type.DRAGON, 10.9, 415.6, Abilities.FRISK, Abilities.NONE, Abilities.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false),
new PokemonSpecies(Species.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", Type.FIRE, Type.GHOST, 1, 34, Abilities.CURSED_BODY, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 551, 74, 65, 67, 125, 128, 92, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false), //Marked as Sub-Legend, for casing purposes
new PokemonSpecies(Species.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 551, 74, 65, 67, 125, 128, 92, 120, 70, 243, GrowthRate.MEDIUM_FAST, 0, false), //Marked as Sub-Legend, for casing purposes
new PokemonSpecies(Species.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", Type.STEEL, null, 0.4, 7.5, Abilities.PICKUP, Abilities.TOUGH_CLAWS, Abilities.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", Type.PSYCHIC, null, 0.8, 24, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", Type.PSYCHIC, Type.FAIRY, 1.7, 80, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false),
@ -2767,7 +2878,7 @@ export function initSpecies() {
new PokemonForm("Aqua Breed", "aqua", Type.FIGHTING, Type.WATER, 1.4, 110, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true),
),
new PokemonSpecies(Species.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", Type.POISON, Type.GROUND, 0.4, 11, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false),
new PokemonSpecies(Species.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", Type.GROUND, Type.NORMAL, 2.7, 333, Abilities.MINDS_EYE, Abilities.NONE, Abilities.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes
new PokemonSpecies(Species.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", Type.GROUND, Type.NORMAL, 2.7, 333, Abilities.MINDS_EYE, Abilities.NONE, Abilities.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes
);
}

Some files were not shown because too many files have changed in this diff Show More