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

View File

@ -5,6 +5,7 @@ import importX from 'eslint-plugin-import-x';
export default [ export default [
{ {
name: "eslint-config",
files: ["src/**/*.{ts,tsx,js,jsx}"], files: ["src/**/*.{ts,tsx,js,jsx}"],
ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"], ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"],
languageOptions: { languageOptions: {
@ -48,5 +49,22 @@ export default [
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], // Disallows multiple empty lines "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 "@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 */ /* 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='POKEDEX'], [data-ui-mode='POKEDEX_PAGE']) #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='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='RUN_INFO']) #apadCycleShiny, #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']) #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'], [data-ui-mode='POKEDEX_PAGE'], [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'], [data-ui-mode='POKEDEX_PAGE']) #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']) #apadCycleVariant {
display: none; display: none;
} }

439
package-lock.json generated
View File

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

View File

@ -1,7 +1,7 @@
{ {
"name": "pokemon-rogue-battle", "name": "pokemon-rogue-battle",
"private": true, "private": true,
"version": "1.5.2", "version": "1.6.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "vite", "start": "vite",
@ -33,7 +33,7 @@
"@types/node": "^20.12.13", "@types/node": "^20.12.13",
"@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54", "@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54",
"@typescript-eslint/parser": "^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", "dependency-cruiser": "^16.3.10",
"eslint": "^9.7.0", "eslint": "^9.7.0",
"eslint-plugin-import-x": "^4.2.1", "eslint-plugin-import-x": "^4.2.1",
@ -45,9 +45,9 @@
"typedoc": "^0.26.4", "typedoc": "^0.26.4",
"typescript": "^5.5.3", "typescript": "^5.5.3",
"typescript-eslint": "^8.0.0-alpha.54", "typescript-eslint": "^8.0.0-alpha.54",
"vite": "^5.4.8", "vite": "^5.4.14",
"vite-tsconfig-paths": "^4.3.2", "vite-tsconfig-paths": "^4.3.2",
"vitest": "^2.0.4", "vitest": "^2.1.9",
"vitest-canvas-mock": "^0.3.3" "vitest-canvas-mock": "^0.3.3"
}, },
"dependencies": { "dependencies": {
@ -64,11 +64,5 @@
}, },
"engines": { "engines": {
"node": ">=20.0.0" "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", "6211",
"6215", "6215",
"6215", "6215",
"6215f",
"6215f",
"65-mega", "65-mega",
"65-mega", "65-mega",
"650", "650",
@ -291,8 +293,8 @@
"666-tundra", "666-tundra",
"667", "667",
"667", "667",
"668-female", "668f",
"668-female", "668f",
"668", "668",
"668", "668",
"669-blue", "669-blue",
@ -1333,6 +1335,8 @@
"6211b", "6211b",
"6215b", "6215b",
"6215b", "6215b",
"6215bf",
"6215bf",
"65b-mega", "65b-mega",
"65b-mega", "65b-mega",
"650b", "650b",
@ -1423,8 +1427,8 @@
"666b-tundra", "666b-tundra",
"667b", "667b",
"667b", "667b",
"668b-female", "668bf",
"668b-female", "668bf",
"668b", "668b",
"668b", "668b",
"669b-blue", "669b-blue",
@ -2467,6 +2471,8 @@
"6211sb", "6211sb",
"6215sb", "6215sb",
"6215sb", "6215sb",
"6215sbf",
"6215sbf",
"65sb-mega", "65sb-mega",
"65sb-mega", "65sb-mega",
"650sb", "650sb",
@ -2559,6 +2565,8 @@
"667sb", "667sb",
"668sb", "668sb",
"668sb", "668sb",
"668sbf",
"668sbf",
"669sb-blue", "669sb-blue",
"669sb-blue", "669sb-blue",
"669sb-orange", "669sb-orange",
@ -3604,6 +3612,8 @@
"6211s", "6211s",
"6215s", "6215s",
"6215s", "6215s",
"6215sf",
"6215sf",
"65s-mega", "65s-mega",
"65s-mega", "65s-mega",
"650s", "650s",
@ -3694,8 +3704,8 @@
"666s-tundra", "666s-tundra",
"667s", "667s",
"667s", "667s",
"668s-female", "668sf",
"668s-female", "668sf",
"668s", "668s",
"668s", "668s",
"669s-blue", "669s-blue",
@ -4587,6 +4597,7 @@
"475-mega_3", "475-mega_3",
"475-mega_3", "475-mega_3",
"6215", "6215",
"6215f",
"653", "653",
"654", "654",
"6549", "6549",
@ -4856,6 +4867,7 @@
"475b-mega_3", "475b-mega_3",
"475b-mega_3", "475b-mega_3",
"6215b", "6215b",
"6215bf",
"653b", "653b",
"654b", "654b",
"6549b", "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": [ { "frames": [
{ {
"filename": "0001.png", "filename": "0001.png",
"frame": { "x": 0, "y": 0, "w": 77, "h": 77 }, "frame": { "x": 0, "y": 0, "w": 77, "h": 65 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 77 }, "spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 65 },
"sourceSize": { "w": 77, "h": 77 }, "sourceSize": { "w": 77, "h": 65 },
"duration": 100 "duration": 100
} }
], ],
"meta": { "meta": {
"app": "https://www.aseprite.org/", "app": "https://www.aseprite.org/",
"version": "1.3.7-x64", "version": "1.3.9.2-x64",
"format": "I8", "format": "I8",
"size": { "w": 77, "h": 77 }, "size": { "w": 77, "h": 65 },
"scale": "1" "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": [ { "frames": [
{ {
"filename": "0001.png", "filename": "0001.png",
"frame": { "x": 0, "y": 0, "w": 77, "h": 77 }, "frame": { "x": 0, "y": 0, "w": 77, "h": 65 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 77 }, "spriteSourceSize": { "x": 0, "y": 0, "w": 77, "h": 65 },
"sourceSize": { "w": 77, "h": 77 }, "sourceSize": { "w": 77, "h": 65 },
"duration": 100 "duration": 100
} }
], ],
@ -13,7 +13,7 @@
"app": "https://www.aseprite.org/", "app": "https://www.aseprite.org/",
"version": "1.3.7-x64", "version": "1.3.7-x64",
"format": "I8", "format": "I8",
"size": { "w": 77, "h": 77 }, "size": { "w": 77, "h": 65 },
"scale": "1" "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 @@
{ { "frames": [
"textures": [ {
{ "filename": "0001.png",
"image": "667.png", "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"format": "RGBA8888", "rotated": false,
"size": { "trimmed": true,
"w": 160, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"h": 160 "sourceSize": { "w": 42, "h": 49 },
}, "duration": 110
"scale": 1, },
"frames": [ {
{ "filename": "0002.png",
"filename": "0001.png", "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0003.png",
"y": 0, "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 0, },
"w": 40, {
"h": 46 "filename": "0004.png",
} "frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0007.png", "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": false, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0005.png",
}, "frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"frame": { {
"x": 0, "filename": "0006.png",
"y": 0, "frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0005.png", },
"rotated": false, {
"trimmed": false, "filename": "0007.png",
"sourceSize": { "frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 0, },
"w": 40, {
"h": 46 "filename": "0008.png",
}, "frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"frame": { "rotated": false,
"x": 0, "trimmed": true,
"y": 46, "spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
} },
}, {
{ "filename": "0009.png",
"filename": "0006.png", "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0010.png",
"y": 0, "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 92, },
"w": 40, {
"h": 46 "filename": "0011.png",
} "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0011.png", "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": false, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0012.png",
}, "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"frame": { {
"x": 40, "filename": "0013.png",
"y": 0, "frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0012.png", },
"rotated": false, {
"trimmed": false, "filename": "0014.png",
"sourceSize": { "frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 0, },
"w": 40, {
"h": 46 "filename": "0015.png",
}, "frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"frame": { "rotated": false,
"x": 80, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
} },
}, {
{ "filename": "0016.png",
"filename": "0002.png", "frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0017.png",
"y": 1, "frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"w": 40, "rotated": false,
"h": 45 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 120, "duration": 110
"y": 0, },
"w": 40, {
"h": 45 "filename": "0018.png",
} "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0008.png", "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": true, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0019.png",
}, "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 1, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 45 "duration": 110
}, },
"frame": { {
"x": 120, "filename": "0020.png",
"y": 0, "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 45 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0004.png", },
"rotated": false, {
"trimmed": true, "filename": "0021.png",
"sourceSize": { "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 1, },
"w": 40, {
"h": 45 "filename": "0022.png",
}, "frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"frame": { "rotated": false,
"x": 120, "trimmed": true,
"y": 45, "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 45 "duration": 110
} },
}, {
{ "filename": "0023.png",
"filename": "0010.png", "frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0024.png",
"y": 1, "frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"w": 40, "rotated": false,
"h": 45 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 40, "duration": 110
"y": 90, },
"w": 40, {
"h": 45 "filename": "0025.png",
} "frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0003.png", "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": true, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0026.png",
}, "frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 2, "spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 44 "duration": 110
}, },
"frame": { {
"x": 40, "filename": "0027.png",
"y": 46, "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 44 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0009.png", },
"rotated": false, {
"trimmed": true, "filename": "0028.png",
"sourceSize": { "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 2, },
"w": 40, {
"h": 44 "filename": "0029.png",
}, "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"frame": { "rotated": false,
"x": 80, "trimmed": true,
"y": 46, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 44 "duration": 110
} },
} {
] "filename": "0030.png",
} "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
], "rotated": false,
"meta": { "trimmed": true,
"app": "https://www.codeandweb.com/texturepacker", "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"version": "3.0", "sourceSize": { "w": 42, "h": 49 },
"smartupdate": "$TexturePacker:SmartUpdate:0c78c1973ebb266716d5a3a4557bca98:3ab4a906b1847f4048e828e5410eae40:02171d511e760c8a3e1b623ad6bf93f5$" "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 @@
{ { "frames": [
"textures": [ {
{ "filename": "0001.png",
"image": "667.png", "frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"format": "RGBA8888", "rotated": false,
"size": { "trimmed": true,
"w": 115, "spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"h": 115 "sourceSize": { "w": 43, "h": 48 },
}, "duration": 110
"scale": 1, },
"frames": [ {
{ "filename": "0002.png",
"filename": "0001.png", "frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"w": 39, "sourceSize": { "w": 43, "h": 48 },
"h": 42 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0003.png",
"y": 0, "frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"w": 39, "rotated": false,
"h": 42 "trimmed": true,
}, "spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"frame": { "sourceSize": { "w": 43, "h": 48 },
"x": 0, "duration": 110
"y": 0, },
"w": 39, {
"h": 42 "filename": "0004.png",
} "frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0002.png", "spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
"rotated": false, "sourceSize": { "w": 43, "h": 48 },
"trimmed": false, "duration": 110
"sourceSize": { },
"w": 39, {
"h": 42 "filename": "0005.png",
}, "frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
"w": 39, "sourceSize": { "w": 43, "h": 48 },
"h": 42 "duration": 110
}, },
"frame": { {
"x": 0, "filename": "0006.png",
"y": 42, "frame": { "x": 118, "y": 94, "w": 38, "h": 43 },
"w": 39, "rotated": false,
"h": 42 "trimmed": true,
} "spriteSourceSize": { "x": 5, "y": 5, "w": 38, "h": 43 },
}, "sourceSize": { "w": 43, "h": 48 },
{ "duration": 110
"filename": "0003.png", },
"rotated": false, {
"trimmed": true, "filename": "0007.png",
"sourceSize": { "frame": { "x": 40, "y": 49, "w": 39, "h": 44 },
"w": 39, "rotated": false,
"h": 42 "trimmed": true,
}, "spriteSourceSize": { "x": 4, "y": 4, "w": 39, "h": 44 },
"spriteSourceSize": { "sourceSize": { "w": 43, "h": 48 },
"x": 0, "duration": 110
"y": 1, },
"w": 39, {
"h": 41 "filename": "0008.png",
}, "frame": { "x": 0, "y": 49, "w": 39, "h": 45 },
"frame": { "rotated": false,
"x": 39, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"w": 39, "sourceSize": { "w": 43, "h": 48 },
"h": 41 "duration": 110
} },
}, {
{ "filename": "0009.png",
"filename": "0004.png", "frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"w": 39, "sourceSize": { "w": 43, "h": 48 },
"h": 42 "duration": 110
}, },
"spriteSourceSize": { {
"x": 1, "filename": "0010.png",
"y": 0, "frame": { "x": 127, "y": 0, "w": 40, "h": 46 },
"w": 38, "rotated": false,
"h": 42 "trimmed": true,
}, "spriteSourceSize": { "x": 3, "y": 2, "w": 40, "h": 46 },
"frame": { "sourceSize": { "w": 43, "h": 48 },
"x": 39, "duration": 110
"y": 41, },
"w": 38, {
"h": 42 "filename": "0011.png",
} "frame": { "x": 127, "y": 47, "w": 39, "h": 46 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0005.png", "spriteSourceSize": { "x": 4, "y": 2, "w": 39, "h": 46 },
"rotated": false, "sourceSize": { "w": 43, "h": 48 },
"trimmed": true, "duration": 110
"sourceSize": { },
"w": 39, {
"h": 42 "filename": "0012.png",
}, "frame": { "x": 85, "y": 48, "w": 39, "h": 45 },
"spriteSourceSize": { "rotated": false,
"x": 1, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 4, "y": 3, "w": 39, "h": 45 },
"w": 38, "sourceSize": { "w": 43, "h": 48 },
"h": 42 "duration": 110
}, },
"frame": { {
"x": 77, "filename": "0013.png",
"y": 41, "frame": { "x": 40, "y": 94, "w": 38, "h": 44 },
"w": 38, "rotated": false,
"h": 42 "trimmed": true,
} "spriteSourceSize": { "x": 5, "y": 4, "w": 38, "h": 44 },
} "sourceSize": { "w": 43, "h": 48 },
] "duration": 110
} },
], {
"meta": { "filename": "0014.png",
"app": "https://www.codeandweb.com/texturepacker", "frame": { "x": 79, "y": 94, "w": 38, "h": 43 },
"version": "3.0", "rotated": false,
"smartupdate": "$TexturePacker:SmartUpdate:0515d906bdf1ec3ad533ac13c4e701ec:195a93073ecc7446c747c2e79ae07d54:02171d511e760c8a3e1b623ad6bf93f5$" "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 @@
{ { "frames": [
"textures": [ {
{ "filename": "0001.png",
"image": "668.png", "frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"format": "RGBA8888", "rotated": false,
"size": { "trimmed": true,
"w": 146, "spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"h": 146 "sourceSize": { "w": 80, "h": 74 },
}, "duration": 100
"scale": 1, },
"frames": [ {
{ "filename": "0002.png",
"filename": "0001.png", "frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0003.png",
"y": 0, "frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
}, "spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"frame": { "sourceSize": { "w": 80, "h": 74 },
"x": 0, "duration": 100
"y": 0, },
"w": 73, {
"h": 61 "filename": "0004.png",
} "frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0002.png", "spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"rotated": false, "sourceSize": { "w": 80, "h": 74 },
"trimmed": false, "duration": 100
"sourceSize": { },
"w": 73, {
"h": 61 "filename": "0005.png",
}, "frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
}, },
"frame": { {
"x": 73, "filename": "0006.png",
"y": 0, "frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
}, "sourceSize": { "w": 80, "h": 74 },
{ "duration": 100
"filename": "0006.png", },
"rotated": false, {
"trimmed": false, "filename": "0007.png",
"sourceSize": { "frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"spriteSourceSize": { "sourceSize": { "w": 80, "h": 74 },
"x": 0, "duration": 100
"y": 0, },
"w": 73, {
"h": 61 "filename": "0008.png",
}, "frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"frame": { "rotated": false,
"x": 73, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
} },
}, {
{ "filename": "0009.png",
"filename": "0003.png", "frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0010.png",
"y": 1, "frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"w": 73, "rotated": false,
"h": 60 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"frame": { "sourceSize": { "w": 80, "h": 74 },
"x": 0, "duration": 100
"y": 61, },
"w": 73, {
"h": 60 "filename": "0011.png",
} "frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0005.png", "spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"rotated": false, "sourceSize": { "w": 80, "h": 74 },
"trimmed": true, "duration": 100
"sourceSize": { },
"w": 73, {
"h": 61 "filename": "0012.png",
}, "frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 1, "spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 60 "duration": 100
}, },
"frame": { {
"x": 0, "filename": "0013.png",
"y": 61, "frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"w": 73, "rotated": false,
"h": 60 "trimmed": true,
} "spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
}, "sourceSize": { "w": 80, "h": 74 },
{ "duration": 100
"filename": "0004.png", },
"rotated": false, {
"trimmed": true, "filename": "0014.png",
"sourceSize": { "frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
}, "spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"spriteSourceSize": { "sourceSize": { "w": 80, "h": 74 },
"x": 1, "duration": 100
"y": 2, },
"w": 72, {
"h": 59 "filename": "0015.png",
}, "frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"frame": { "rotated": false,
"x": 73, "trimmed": true,
"y": 61, "spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"w": 72, "sourceSize": { "w": 80, "h": 74 },
"h": 59 "duration": 100
} },
} {
] "filename": "0016.png",
} "frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
], "rotated": false,
"meta": { "trimmed": true,
"app": "https://www.codeandweb.com/texturepacker", "spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"version": "3.0", "sourceSize": { "w": 80, "h": 74 },
"smartupdate": "$TexturePacker:SmartUpdate:bc67ee0b37e5c8a13762178a52fad862:1ee199920770bc5797feb94424ff9f9a:947bf84d1af493c62e2cef45bb6c19ad$" "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 @@
{ { "frames": [
"textures": [ {
{ "filename": "0001.png",
"image": "668.png", "frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
"format": "RGBA8888", "rotated": false,
"size": { "trimmed": true,
"w": 146, "spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"h": 146 "sourceSize": { "w": 80, "h": 74 },
}, "duration": 100
"scale": 1, },
"frames": [ {
{ "filename": "0002.png",
"filename": "0001.png", "frame": { "x": 303, "y": 221, "w": 74, "h": 71 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0003.png",
"y": 0, "frame": { "x": 383, "y": 147, "w": 75, "h": 72 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
}, "spriteSourceSize": { "x": 2, "y": 2, "w": 75, "h": 72 },
"frame": { "sourceSize": { "w": 80, "h": 74 },
"x": 0, "duration": 100
"y": 0, },
"w": 73, {
"h": 61 "filename": "0004.png",
} "frame": { "x": 233, "y": 74, "w": 76, "h": 72 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0002.png", "spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
"rotated": false, "sourceSize": { "w": 80, "h": 74 },
"trimmed": false, "duration": 100
"sourceSize": { },
"w": 73, {
"h": 61 "filename": "0005.png",
}, "frame": { "x": 459, "y": 147, "w": 75, "h": 72 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 1, "y": 2, "w": 75, "h": 72 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
}, },
"frame": { {
"x": 73, "filename": "0006.png",
"y": 0, "frame": { "x": 315, "y": 0, "w": 76, "h": 73 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 1, "w": 76, "h": 73 },
}, "sourceSize": { "w": 80, "h": 74 },
{ "duration": 100
"filename": "0006.png", },
"rotated": false, {
"trimmed": false, "filename": "0007.png",
"sourceSize": { "frame": { "x": 387, "y": 74, "w": 76, "h": 72 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 2, "w": 76, "h": 72 },
"spriteSourceSize": { "sourceSize": { "w": 80, "h": 74 },
"x": 0, "duration": 100
"y": 0, },
"w": 73, {
"h": 61 "filename": "0008.png",
}, "frame": { "x": 392, "y": 0, "w": 75, "h": 73 },
"frame": { "rotated": false,
"x": 73, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 1, "w": 75, "h": 73 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
} },
}, {
{ "filename": "0009.png",
"filename": "0003.png", "frame": { "x": 237, "y": 0, "w": 77, "h": 73 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 1, "w": 77, "h": 73 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 61 "duration": 100
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0010.png",
"y": 1, "frame": { "x": 0, "y": 0, "w": 78, "h": 74 },
"w": 73, "rotated": false,
"h": 60 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 0, "w": 78, "h": 74 },
"frame": { "sourceSize": { "w": 80, "h": 74 },
"x": 0, "duration": 100
"y": 61, },
"w": 73, {
"h": 60 "filename": "0011.png",
} "frame": { "x": 79, "y": 0, "w": 78, "h": 73 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0005.png", "spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"rotated": false, "sourceSize": { "w": 80, "h": 74 },
"trimmed": true, "duration": 100
"sourceSize": { },
"w": 73, {
"h": 61 "filename": "0012.png",
}, "frame": { "x": 158, "y": 0, "w": 78, "h": 73 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 1, "spriteSourceSize": { "x": 0, "y": 1, "w": 78, "h": 73 },
"w": 73, "sourceSize": { "w": 80, "h": 74 },
"h": 60 "duration": 100
}, },
"frame": { {
"x": 0, "filename": "0013.png",
"y": 61, "frame": { "x": 0, "y": 75, "w": 76, "h": 72 },
"w": 73, "rotated": false,
"h": 60 "trimmed": true,
} "spriteSourceSize": { "x": 1, "y": 2, "w": 76, "h": 72 },
}, "sourceSize": { "w": 80, "h": 74 },
{ "duration": 100
"filename": "0004.png", },
"rotated": false, {
"trimmed": true, "filename": "0014.png",
"sourceSize": { "frame": { "x": 458, "y": 220, "w": 75, "h": 71 },
"w": 73, "rotated": false,
"h": 61 "trimmed": true,
}, "spriteSourceSize": { "x": 1, "y": 3, "w": 75, "h": 71 },
"spriteSourceSize": { "sourceSize": { "w": 80, "h": 74 },
"x": 1, "duration": 100
"y": 2, },
"w": 72, {
"h": 59 "filename": "0015.png",
}, "frame": { "x": 150, "y": 364, "w": 73, "h": 71 },
"frame": { "rotated": false,
"x": 73, "trimmed": true,
"y": 61, "spriteSourceSize": { "x": 3, "y": 3, "w": 73, "h": 71 },
"w": 72, "sourceSize": { "w": 80, "h": 74 },
"h": 59 "duration": 100
} },
} {
] "filename": "0016.png",
} "frame": { "x": 152, "y": 292, "w": 74, "h": 71 },
], "rotated": false,
"meta": { "trimmed": true,
"app": "https://www.codeandweb.com/texturepacker", "spriteSourceSize": { "x": 3, "y": 3, "w": 74, "h": 71 },
"version": "3.0", "sourceSize": { "w": 80, "h": 74 },
"smartupdate": "$TexturePacker:SmartUpdate:0e20693ecfc704a58db8c8592fcdc9cc:659468d84f3cc98068a3454a7c68f1e4:947bf84d1af493c62e2cef45bb6c19ad$" "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 @@
{ { "frames": [
"textures": [ {
{ "filename": "0001.png",
"image": "667.png", "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"format": "RGBA8888", "rotated": false,
"size": { "trimmed": true,
"w": 160, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"h": 160 "sourceSize": { "w": 42, "h": 49 },
}, "duration": 110
"scale": 1, },
"frames": [ {
{ "filename": "0002.png",
"filename": "0001.png", "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0003.png",
"y": 0, "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 0, },
"w": 40, {
"h": 46 "filename": "0004.png",
} "frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0007.png", "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": false, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0005.png",
}, "frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"frame": { {
"x": 0, "filename": "0006.png",
"y": 0, "frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0005.png", },
"rotated": false, {
"trimmed": false, "filename": "0007.png",
"sourceSize": { "frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 0, },
"w": 40, {
"h": 46 "filename": "0008.png",
}, "frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"frame": { "rotated": false,
"x": 0, "trimmed": true,
"y": 46, "spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
} },
}, {
{ "filename": "0009.png",
"filename": "0006.png", "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0010.png",
"y": 0, "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 92, },
"w": 40, {
"h": 46 "filename": "0011.png",
} "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0011.png", "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": false, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0012.png",
}, "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"frame": { {
"x": 40, "filename": "0013.png",
"y": 0, "frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0012.png", },
"rotated": false, {
"trimmed": false, "filename": "0014.png",
"sourceSize": { "frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 0, },
"w": 40, {
"h": 46 "filename": "0015.png",
}, "frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"frame": { "rotated": false,
"x": 80, "trimmed": true,
"y": 0, "spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
} },
}, {
{ "filename": "0016.png",
"filename": "0002.png", "frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0017.png",
"y": 1, "frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"w": 40, "rotated": false,
"h": 45 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 120, "duration": 110
"y": 0, },
"w": 40, {
"h": 45 "filename": "0018.png",
} "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0008.png", "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": true, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0019.png",
}, "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 1, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 45 "duration": 110
}, },
"frame": { {
"x": 120, "filename": "0020.png",
"y": 0, "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 45 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0004.png", },
"rotated": false, {
"trimmed": true, "filename": "0021.png",
"sourceSize": { "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 1, },
"w": 40, {
"h": 45 "filename": "0022.png",
}, "frame": { "x": 40, "y": 50, "w": 39, "h": 45 },
"frame": { "rotated": false,
"x": 120, "trimmed": true,
"y": 45, "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 45 "duration": 110
} },
}, {
{ "filename": "0023.png",
"filename": "0010.png", "frame": { "x": 120, "y": 96, "w": 38, "h": 44 },
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"sourceSize": { "spriteSourceSize": { "x": 0, "y": 5, "w": 38, "h": 44 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 46 "duration": 110
}, },
"spriteSourceSize": { {
"x": 0, "filename": "0024.png",
"y": 1, "frame": { "x": 80, "y": 96, "w": 39, "h": 44 },
"w": 40, "rotated": false,
"h": 45 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 5, "w": 39, "h": 44 },
"frame": { "sourceSize": { "w": 42, "h": 49 },
"x": 40, "duration": 110
"y": 90, },
"w": 40, {
"h": 45 "filename": "0025.png",
} "frame": { "x": 40, "y": 96, "w": 39, "h": 45 },
}, "rotated": false,
{ "trimmed": true,
"filename": "0003.png", "spriteSourceSize": { "x": 0, "y": 4, "w": 39, "h": 45 },
"rotated": false, "sourceSize": { "w": 42, "h": 49 },
"trimmed": true, "duration": 110
"sourceSize": { },
"w": 40, {
"h": 46 "filename": "0026.png",
}, "frame": { "x": 85, "y": 49, "w": 40, "h": 46 },
"spriteSourceSize": { "rotated": false,
"x": 0, "trimmed": true,
"y": 2, "spriteSourceSize": { "x": 0, "y": 3, "w": 40, "h": 46 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 44 "duration": 110
}, },
"frame": { {
"x": 40, "filename": "0027.png",
"y": 46, "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 44 "trimmed": true,
} "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
}, "sourceSize": { "w": 42, "h": 49 },
{ "duration": 110
"filename": "0009.png", },
"rotated": false, {
"trimmed": true, "filename": "0028.png",
"sourceSize": { "frame": { "x": 127, "y": 0, "w": 40, "h": 47 },
"w": 40, "rotated": false,
"h": 46 "trimmed": true,
}, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"spriteSourceSize": { "sourceSize": { "w": 42, "h": 49 },
"x": 0, "duration": 110
"y": 2, },
"w": 40, {
"h": 44 "filename": "0029.png",
}, "frame": { "x": 127, "y": 48, "w": 40, "h": 47 },
"frame": { "rotated": false,
"x": 80, "trimmed": true,
"y": 46, "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 47 },
"w": 40, "sourceSize": { "w": 42, "h": 49 },
"h": 44 "duration": 110
} },
} {
] "filename": "0030.png",
} "frame": { "x": 0, "y": 50, "w": 39, "h": 46 },
], "rotated": false,
"meta": { "trimmed": true,
"app": "https://www.codeandweb.com/texturepacker", "spriteSourceSize": { "x": 0, "y": 3, "w": 39, "h": 46 },
"version": "3.0", "sourceSize": { "w": 42, "h": 49 },
"smartupdate": "$TexturePacker:SmartUpdate:fb79c9185dd67d4776808c312f36f7a4:a6c3c7cc2402b26f23f5ac4e23929ba7:02171d511e760c8a3e1b623ad6bf93f5$" "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], "612": [0, 1, 1],
"616": [0, 1, 1], "616": [0, 1, 1],
"617": [0, 1, 1], "617": [0, 1, 1],
"618": [0, 2, 2], "618": [0, 1, 1],
"619": [0, 1, 1], "619": [0, 1, 1],
"620": [0, 1, 1], "620": [0, 1, 1],
"621": [0, 1, 1], "621": [0, 1, 1],
@ -2143,7 +2143,9 @@
"6705": [0, 1, 1], "6705": [0, 1, 1],
"6706": [0, 1, 1], "6706": [0, 1, 1],
"6713": [0, 1, 1], "6713": [0, 1, 1],
"female": {}, "female": {
"6215": [0, 1, 1]
},
"back": { "back": {
"3-mega": [0, 2, 2], "3-mega": [0, 2, 2],
"6-mega-x": [0, 2, 2], "6-mega-x": [0, 2, 2],
@ -2470,7 +2472,10 @@
"6571": [0, 1, 1], "6571": [0, 1, 1],
"6705": [0, 1, 1], "6705": [0, 1, 1],
"6706": [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 reroll: boolean = false;
public shopCursorTarget: number = ShopCursorTarget.REWARDS; public shopCursorTarget: number = ShopCursorTarget.REWARDS;
public commandCursorMemory: boolean = false; public commandCursorMemory: boolean = false;
public dexForDevs: boolean = false;
public showMovesetFlyout: boolean = true; public showMovesetFlyout: boolean = true;
public showArenaFlyout: boolean = true; public showArenaFlyout: boolean = true;
public showTimeOfDayWidget: boolean = true; public showTimeOfDayWidget: boolean = true;
@ -1400,8 +1401,8 @@ export default class BattleScene extends SceneBase {
return this.currentBattle; return this.currentBattle;
} }
newArena(biome: Biome): Arena { newArena(biome: Biome, playerFaints?: number): Arena {
this.arena = new Arena(biome, Biome[biome].toLowerCase()); this.arena = new Arena(biome, Biome[biome].toLowerCase(), playerFaints);
this.eventTarget.dispatchEvent(new NewArenaEvent()); this.eventTarget.dispatchEvent(new NewArenaEvent());
this.arenaBg.pipelineData = { terrainColorRatio: this.arena.getBgTerrainColorRatioForBiome() }; 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 * Adds Phase(s) to the end of phaseQueuePrepend, or at phaseQueuePrependSpliceIndex
* @param phase {@linkcode Phase} the phase to add * @param phases {@linkcode Phase} the phase(s) to add
*/ */
unshiftPhase(phase: Phase): void { unshiftPhase(...phases: Phase[]): void {
if (this.phaseQueuePrependSpliceIndex === -1) { if (this.phaseQueuePrependSpliceIndex === -1) {
this.phaseQueuePrepend.push(phase); this.phaseQueuePrepend.push(...phases);
} else { } 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 * @param targetPhase {@linkcode Phase} the type of phase to search for in phaseQueue
* @returns boolean if a targetPhase was found and added * @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); const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase);
if (targetIndex !== -1) { if (targetIndex !== -1) {
this.phaseQueue.splice(targetIndex, 0, phase); this.phaseQueue.splice(targetIndex, 0, ...phase);
return true; return true;
} else { } else {
this.unshiftPhase(phase); this.unshiftPhase(...phase);
return false; return false;
} }
} }
/** /**
* Tries to add the input phase to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()} * 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 to be added * @param phase {@linkcode Phase} the phase(s) to be added
* @param targetPhase {@linkcode Phase} the type of phase to search for in {@linkcode phaseQueue} * @param targetPhase {@linkcode Phase} the type of phase to search for in {@linkcode phaseQueue}
* @returns `true` if a `targetPhase` was found to append to * @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); const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase);
if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) { if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) {
this.phaseQueue.splice(targetIndex + 1, 0, phase); this.phaseQueue.splice(targetIndex + 1, 0, ...phase);
return true; return true;
} else { } else {
this.unshiftPhase(phase); this.unshiftPhase(...phase);
return false; return false;
} }
} }

View File

@ -101,10 +101,15 @@ export default class Battle {
public battleSeed: string = Utils.randomString(16, true); public battleSeed: string = Utils.randomString(16, true);
private battleSeedState: string | null = null; private battleSeedState: string | null = null;
public moneyScattered: number = 0; 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; public lastUsedPokeball: PokeballType | null = null;
/** The number of times a Pokemon on the player's side has fainted this battle */ /**
public playerFaints: number = 0; * Saves the number of times a Pokemon on the enemy's side has fainted during this battle.
/** The number of times a Pokemon on the enemy's side has fainted 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 enemyFaints: number = 0;
public playerFaintsHistory: FaintLogEntry[] = []; public playerFaintsHistory: FaintLogEntry[] = [];
public enemyFaintsHistory: FaintLogEntry[] = []; public enemyFaintsHistory: FaintLogEntry[] = [];
@ -115,7 +120,7 @@ export default class Battle {
private rngCounter: number = 0; 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.gameMode = gameMode;
this.waveIndex = waveIndex; this.waveIndex = waveIndex;
this.battleType = battleType; this.battleType = battleType;
@ -124,7 +129,7 @@ export default class Battle {
this.enemyLevels = battleType !== BattleType.TRAINER this.enemyLevels = battleType !== BattleType.TRAINER
? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave()) ? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave())
: trainer?.getPartyLevels(this.waveIndex); : trainer?.getPartyLevels(this.waveIndex);
this.double = double ?? false; this.double = double;
} }
private initBattleSpec(): void { 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 { 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 (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; return false;
} else { } else {
if (!simulated) { 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 { export class PreSwitchOutHealAbAttr extends PreSwitchOutAbAttr {
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> { 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 { export class PreStatStageChangeAbAttr extends AbAttr {
applyPreStatStageChange(pokemon: Pokemon | null, passive: boolean, simulated: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise<boolean> { applyPreStatStageChange(pokemon: Pokemon | null, passive: boolean, simulated: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise<boolean> {
return false; 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 * 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 { export class PostFaintContactDamageAbAttr extends PostFaintAbAttr {
private damageRatio: number; 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 { export class UncopiableAbilityAbAttr extends AbAttr {
constructor() { constructor() {
super(false); 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); 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>, export function applyPreStatStageChangeAbAttrs(attrType: Constructor<PreStatStageChangeAbAttr>,
pokemon: Pokemon | null, stat: BattleStat, cancelled: Utils.BooleanHolder, simulated: boolean = false, ...args: any[]): Promise<void> { 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); 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) }, Stat.SPD, 1)
.attr(PostIntimidateStatStageChangeAbAttr, [ Stat.SPD ], 1), .attr(PostIntimidateStatStageChangeAbAttr, [ Stat.SPD ], 1),
new Ability(Abilities.MAGIC_BOUNCE, 5) new Ability(Abilities.MAGIC_BOUNCE, 5)
.attr(ReflectStatusMoveAbAttr)
.ignorable() .ignorable()
.unimplemented(), // Interactions with stomping tantrum, instruct, encore, and probably other moves that
// rely on move history
.edgeCase(),
new Ability(Abilities.SAP_SIPPER, 5) new Ability(Abilities.SAP_SIPPER, 5)
.attr(TypeImmunityStatStageChangeAbAttr, Type.GRASS, Stat.ATK, 1) .attr(TypeImmunityStatStageChangeAbAttr, Type.GRASS, Stat.ATK, 1)
.ignorable(), .ignorable(),
@ -5912,20 +5918,17 @@ export function initAbilities() {
new Ability(Abilities.PRIMORDIAL_SEA, 6) new Ability(Abilities.PRIMORDIAL_SEA, 6)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HEAVY_RAIN)
.attr(PreSwitchOutClearWeatherAbAttr) .attr(PreLeaveFieldClearWeatherAbAttr)
.attr(PostFaintClearWeatherAbAttr)
.bypassFaint(), .bypassFaint(),
new Ability(Abilities.DESOLATE_LAND, 6) new Ability(Abilities.DESOLATE_LAND, 6)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.HARSH_SUN) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HARSH_SUN)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HARSH_SUN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HARSH_SUN)
.attr(PreSwitchOutClearWeatherAbAttr) .attr(PreLeaveFieldClearWeatherAbAttr)
.attr(PostFaintClearWeatherAbAttr)
.bypassFaint(), .bypassFaint(),
new Ability(Abilities.DELTA_STREAM, 6) new Ability(Abilities.DELTA_STREAM, 6)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.STRONG_WINDS) .attr(PostSummonWeatherChangeAbAttr, WeatherType.STRONG_WINDS)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.STRONG_WINDS) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.STRONG_WINDS)
.attr(PreSwitchOutClearWeatherAbAttr) .attr(PreLeaveFieldClearWeatherAbAttr)
.attr(PostFaintClearWeatherAbAttr)
.bypassFaint(), .bypassFaint(),
new Ability(Abilities.STAMINA, 7) new Ability(Abilities.STAMINA, 7)
.attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1), .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) new Ability(Abilities.PROPELLER_TAIL, 8)
.attr(BlockRedirectAbAttr), .attr(BlockRedirectAbAttr),
new Ability(Abilities.MIRROR_ARMOR, 8) new Ability(Abilities.MIRROR_ARMOR, 8)
.ignorable() .attr(ReflectStatStageChangeAbAttr)
.unimplemented(), .ignorable(),
/** /**
* Right now, the logic is attached to Surf and Dive moves. Ideally, the post-defend/hit should be an * 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 * 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) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.SOUND_BASED), 0.5)
.ignorable(), .ignorable(),
new Ability(Abilities.SAND_SPIT, 8) 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) new Ability(Abilities.ICE_SCALES, 8)
.attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.SPECIAL, 0.5) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.SPECIAL, 0.5)
.ignorable(), .ignorable(),
@ -6171,7 +6175,8 @@ export function initAbilities() {
new Ability(Abilities.STEELY_SPIRIT, 8) new Ability(Abilities.STEELY_SPIRIT, 8)
.attr(UserFieldMoveTypePowerBoostAbAttr, Type.STEEL), .attr(UserFieldMoveTypePowerBoostAbAttr, Type.STEEL),
new Ability(Abilities.PERISH_BODY, 8) new Ability(Abilities.PERISH_BODY, 8)
.attr(PostDefendPerishSongAbAttr, 4), .attr(PostDefendPerishSongAbAttr, 4)
.bypassFaint(),
new Ability(Abilities.WANDERING_SPIRIT, 8) new Ability(Abilities.WANDERING_SPIRIT, 8)
.attr(PostDefendAbilitySwapAbAttr) .attr(PostDefendAbilitySwapAbAttr)
.bypassFaint() .bypassFaint()
@ -6229,7 +6234,8 @@ export function initAbilities() {
.attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA) .attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA)
.bypassFaint(), .bypassFaint(),
new Ability(Abilities.SEED_SOWER, 9) new Ability(Abilities.SEED_SOWER, 9)
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY), .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY)
.bypassFaint(),
new Ability(Abilities.THERMAL_EXCHANGE, 9) new Ability(Abilities.THERMAL_EXCHANGE, 9)
.attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1)
.attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN)
@ -6279,15 +6285,13 @@ export function initAbilities() {
.attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)
.attr(NoTransformAbilityAbAttr) .attr(NoTransformAbilityAbAttr),
.partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
new Ability(Abilities.QUARK_DRIVE, 9) new Ability(Abilities.QUARK_DRIVE, 9)
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true)
.attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC) .attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)
.attr(NoTransformAbilityAbAttr) .attr(NoTransformAbilityAbAttr),
.partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
new Ability(Abilities.GOOD_AS_GOLD, 9) 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)) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.category === MoveCategory.STATUS && ![ MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES, MoveTarget.USER_SIDE ].includes(move.moveTarget))
.ignorable(), .ignorable(),
@ -6320,8 +6324,8 @@ export function initAbilities() {
new Ability(Abilities.SHARPNESS, 9) new Ability(Abilities.SHARPNESS, 9)
.attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5), .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5),
new Ability(Abilities.SUPREME_OVERLORD, 9) 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)) .attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 5))
.partial(), // Counter resets every wave instead of on arena reset .partial(), // Should only boost once, on summon
new Ability(Abilities.COSTAR, 9) new Ability(Abilities.COSTAR, 9)
.attr(PostSummonCopyAllyStatsAbAttr), .attr(PostSummonCopyAllyStatsAbAttr),
new Ability(Abilities.TOXIC_DEBRIS, 9) new Ability(Abilities.TOXIC_DEBRIS, 9)

View File

@ -910,7 +910,7 @@ class StickyWebTag extends ArenaTrapTag {
if (!cancelled.value) { if (!cancelled.value) {
globalScene.queueMessage(i18next.t("arenaTag:stickyWebActivateTrap", { pokemonName: pokemon.getNameToRender() })); globalScene.queueMessage(i18next.t("arenaTag:stickyWebActivateTrap", { pokemonName: pokemon.getNameToRender() }));
const stages = new NumberHolder(-1); 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; return true;
} }
} }

View File

@ -7,10 +7,10 @@ import { Species } from "#enums/species";
export const speciesEggMoves = { export const speciesEggMoves = {
[Species.BULBASAUR]: [ Moves.SAPPY_SEED, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ], [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.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.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.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.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.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 ], [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.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.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.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.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.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 ], [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.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.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.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.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.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 ], [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.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.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.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.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.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 ], [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.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.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.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.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.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 ], [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.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.ABSOL]: [ Moves.KOWTOW_CLEAVE, Moves.SACRED_SWORD, Moves.PSYBLADE, Moves.BITTER_BLADE ],
[Species.WYNAUT]: [ Moves.RECOVER, Moves.SHED_TAIL, Moves.TAUNT, Moves.COMEUPPANCE ], [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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 ], [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.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.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.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.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.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.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.DRIFLOON]: [ Moves.PSYCHO_SHIFT, Moves.MIND_BLOWN, Moves.CALM_MIND, Moves.OBLIVION_WING ],
[Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ], [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.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.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.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.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 ], [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.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.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.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.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.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.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.UXIE]: [ Moves.LUMINA_CRASH, Moves.AURA_SPHERE, Moves.RECOVER, Moves.TAIL_GLOW ],
[Species.MESPRIT]: [ Moves.TAIL_GLOW, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], [Species.MESPRIT]: [ Moves.PHOTON_GEYSER, Moves.AURA_SPHERE, Moves.RECOVER, Moves.TAIL_GLOW ],
[Species.AZELF]: [ Moves.PSYSTRIKE, Moves.ICE_BEAM, Moves.MOONBLAST, 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.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.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.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.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.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.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 ], [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.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.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.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.PANSEAR]: [ Moves.NASTY_PLOT, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.ERUPTION ],
[Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.EARTH_POWER, Moves.STEAM_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.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.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.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.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.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.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.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 ], [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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 ], [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.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.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.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.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.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.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.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.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.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.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 ], [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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 ], [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_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_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_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.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.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.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.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.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.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.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.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.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.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.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.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.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_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_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_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 ], [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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 ], [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.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.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.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.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.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.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 ], [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_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_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_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_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_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 ], [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.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.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.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.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.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 ], [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.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.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.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.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.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.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.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.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.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.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 ], [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.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.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.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.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.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.CETODDLE]: [ Moves.ZING_ZAP, Moves.HIGH_HORSEPOWER, Moves.SLACK_OFF, Moves.DRAGON_DANCE ],
[Species.VELUZA]: [ Moves.PSYBLADE, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.BITTER_BLADE ], [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.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.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 ], [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.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.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_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_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_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 ], [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.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.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.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.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.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 ], [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_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.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.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_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.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 ] [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 = { export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE }, [Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE },
[Species.CHARMANDER]: { 0: Abilities.BEAST_BOOST }, [Species.CHARMANDER]: { 0: Abilities.BEAST_BOOST },
[Species.SQUIRTLE]: { 0: Abilities.STURDY }, [Species.SQUIRTLE]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.CATERPIE]: { 0: Abilities.MAGICIAN }, [Species.CATERPIE]: { 0: Abilities.MAGICIAN },
[Species.WEEDLE]: { 0: Abilities.TINTED_LENS }, [Species.WEEDLE]: { 0: Abilities.TINTED_LENS },
[Species.PIDGEY]: { 0: Abilities.SHEER_FORCE }, [Species.PIDGEY]: { 0: Abilities.SHEER_FORCE },
@ -57,7 +57,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.KOFFING]: { 0: Abilities.PARENTAL_BOND }, [Species.KOFFING]: { 0: Abilities.PARENTAL_BOND },
[Species.RHYHORN]: { 0: Abilities.FILTER }, [Species.RHYHORN]: { 0: Abilities.FILTER },
[Species.TANGELA]: { 0: Abilities.SEED_SOWER }, [Species.TANGELA]: { 0: Abilities.SEED_SOWER },
[Species.KANGASKHAN]: { 0: Abilities.GUTS }, [Species.KANGASKHAN]: { 0: Abilities.TECHNICIAN },
[Species.HORSEA]: { 0: Abilities.DRAGONS_MAW }, [Species.HORSEA]: { 0: Abilities.DRAGONS_MAW },
[Species.GOLDEEN]: { 0: Abilities.MULTISCALE }, [Species.GOLDEEN]: { 0: Abilities.MULTISCALE },
[Species.STARYU]: { 0: Abilities.REGENERATOR }, [Species.STARYU]: { 0: Abilities.REGENERATOR },
@ -129,7 +129,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.RAIKOU]: { 0: Abilities.BEAST_BOOST }, [Species.RAIKOU]: { 0: Abilities.BEAST_BOOST },
[Species.ENTEI]: { 0: Abilities.BEAST_BOOST }, [Species.ENTEI]: { 0: Abilities.BEAST_BOOST },
[Species.SUICUNE]: { 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.LUGIA]: { 0: Abilities.DELTA_STREAM },
[Species.HO_OH]: { 0: Abilities.MAGIC_GUARD }, [Species.HO_OH]: { 0: Abilities.MAGIC_GUARD },
[Species.CELEBI]: { 0: Abilities.PSYCHIC_SURGE }, [Species.CELEBI]: { 0: Abilities.PSYCHIC_SURGE },
@ -246,11 +246,11 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.MANTYKE]: { 0: Abilities.UNAWARE }, [Species.MANTYKE]: { 0: Abilities.UNAWARE },
[Species.SNOVER]: { 0: Abilities.GRASSY_SURGE }, [Species.SNOVER]: { 0: Abilities.GRASSY_SURGE },
[Species.ROTOM]: { 0: Abilities.HADRON_ENGINE }, [Species.ROTOM]: { 0: Abilities.HADRON_ENGINE },
[Species.UXIE]: { 0: Abilities.UNAWARE }, [Species.UXIE]: { 0: Abilities.UNNERVE },
[Species.MESPRIT]: { 0: Abilities.MOODY }, [Species.MESPRIT]: { 0: Abilities.MOODY },
[Species.AZELF]: { 0: Abilities.NEUROFORCE }, [Species.AZELF]: { 0: Abilities.NEUROFORCE },
[Species.DIALGA]: { 0: Abilities.LEVITATE }, [Species.DIALGA]: { 0: Abilities.BERSERK },
[Species.PALKIA]: { 0: Abilities.SPEED_BOOST }, [Species.PALKIA]: { 0: Abilities.BERSERK },
[Species.HEATRAN]: { 0: Abilities.EARTH_EATER }, [Species.HEATRAN]: { 0: Abilities.EARTH_EATER },
[Species.REGIGIGAS]: { 0: Abilities.SCRAPPY }, [Species.REGIGIGAS]: { 0: Abilities.SCRAPPY },
[Species.GIRATINA]: { 0: Abilities.SHADOW_SHIELD }, [Species.GIRATINA]: { 0: Abilities.SHADOW_SHIELD },
@ -285,7 +285,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.SEWADDLE]: { 0: Abilities.SHARPNESS }, [Species.SEWADDLE]: { 0: Abilities.SHARPNESS },
[Species.VENIPEDE]: { 0: Abilities.STAMINA }, [Species.VENIPEDE]: { 0: Abilities.STAMINA },
[Species.COTTONEE]: { 0: Abilities.FLUFFY }, [Species.COTTONEE]: { 0: Abilities.FLUFFY },
[Species.PETILIL]: { 0: Abilities.SIMPLE }, [Species.PETILIL]: { 0: Abilities.FLOWER_VEIL },
[Species.BASCULIN]: { 0: Abilities.SUPREME_OVERLORD }, [Species.BASCULIN]: { 0: Abilities.SUPREME_OVERLORD },
[Species.SANDILE]: { 0: Abilities.TOUGH_CLAWS }, [Species.SANDILE]: { 0: Abilities.TOUGH_CLAWS },
[Species.DARUMAKA]: { 0: Abilities.GORILLA_TACTICS }, [Species.DARUMAKA]: { 0: Abilities.GORILLA_TACTICS },
@ -347,7 +347,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.CHESPIN]: { 0: Abilities.DAUNTLESS_SHIELD }, [Species.CHESPIN]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.FENNEKIN]: { 0: Abilities.PSYCHIC_SURGE }, [Species.FENNEKIN]: { 0: Abilities.PSYCHIC_SURGE },
[Species.FROAKIE]: { 0: Abilities.STAKEOUT }, [Species.FROAKIE]: { 0: Abilities.STAKEOUT },
[Species.BUNNELBY]: { 0: Abilities.GUTS }, [Species.BUNNELBY]: { 0: Abilities.THICK_FAT },
[Species.FLETCHLING]: { 0: Abilities.MAGIC_GUARD }, [Species.FLETCHLING]: { 0: Abilities.MAGIC_GUARD },
[Species.SCATTERBUG]: { 0: Abilities.PRANKSTER }, [Species.SCATTERBUG]: { 0: Abilities.PRANKSTER },
[Species.LITLEO]: { 0: Abilities.BEAST_BOOST }, [Species.LITLEO]: { 0: Abilities.BEAST_BOOST },
@ -380,7 +380,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.ZYGARDE]: { 0: Abilities.ADAPTABILITY }, [Species.ZYGARDE]: { 0: Abilities.ADAPTABILITY },
[Species.DIANCIE]: { 0: Abilities.PRISM_ARMOR }, [Species.DIANCIE]: { 0: Abilities.PRISM_ARMOR },
[Species.HOOPA]: { 0: Abilities.OPPORTUNIST }, [Species.HOOPA]: { 0: Abilities.OPPORTUNIST },
[Species.VOLCANION]: { 0: Abilities.FILTER }, [Species.VOLCANION]: { 0: Abilities.NEUTRALIZING_GAS },
[Species.ETERNAL_FLOETTE]: { 0: Abilities.MAGIC_GUARD }, [Species.ETERNAL_FLOETTE]: { 0: Abilities.MAGIC_GUARD },
[Species.ROWLET]: { 0: Abilities.SNIPER }, [Species.ROWLET]: { 0: Abilities.SNIPER },
@ -395,7 +395,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.ROCKRUFF]: { 0: Abilities.ROCKY_PAYLOAD }, [Species.ROCKRUFF]: { 0: Abilities.ROCKY_PAYLOAD },
[Species.WISHIWASHI]: { 0: Abilities.REGENERATOR }, [Species.WISHIWASHI]: { 0: Abilities.REGENERATOR },
[Species.MAREANIE]: { 0: Abilities.TOXIC_DEBRIS }, [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.DEWPIDER]: { 0: Abilities.TINTED_LENS },
[Species.FOMANTIS]: { 0: Abilities.SHARPNESS }, [Species.FOMANTIS]: { 0: Abilities.SHARPNESS },
[Species.MORELULL]: { 0: Abilities.TRIAGE }, [Species.MORELULL]: { 0: Abilities.TRIAGE },
@ -419,8 +419,8 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.DHELMISE]: { 0: Abilities.WATER_BUBBLE }, [Species.DHELMISE]: { 0: Abilities.WATER_BUBBLE },
[Species.JANGMO_O]: { 0: Abilities.DAUNTLESS_SHIELD }, [Species.JANGMO_O]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.TAPU_KOKO]: { 0: Abilities.DAUNTLESS_SHIELD }, [Species.TAPU_KOKO]: { 0: Abilities.DAUNTLESS_SHIELD },
[Species.TAPU_LELE]: { 0: Abilities.SHEER_FORCE }, [Species.TAPU_LELE]: { 0: Abilities.BERSERK },
[Species.TAPU_BULU]: { 0: Abilities.TRIAGE }, [Species.TAPU_BULU]: { 0: Abilities.FLOWER_VEIL },
[Species.TAPU_FINI]: { 0: Abilities.FAIRY_AURA }, [Species.TAPU_FINI]: { 0: Abilities.FAIRY_AURA },
[Species.COSMOG]: { 0: Abilities.BEAST_BOOST }, [Species.COSMOG]: { 0: Abilities.BEAST_BOOST },
[Species.NIHILEGO]: { 0: Abilities.LEVITATE }, [Species.NIHILEGO]: { 0: Abilities.LEVITATE },
@ -542,7 +542,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[Species.VAROOM]: { 0: Abilities.LEVITATE }, [Species.VAROOM]: { 0: Abilities.LEVITATE },
[Species.CYCLIZAR]: { 0: Abilities.PROTEAN }, [Species.CYCLIZAR]: { 0: Abilities.PROTEAN },
[Species.ORTHWORM]: { 0: Abilities.REGENERATOR }, [Species.ORTHWORM]: { 0: Abilities.REGENERATOR },
[Species.GLIMMET]: { 0: Abilities.LEVITATE }, [Species.GLIMMET]: { 0: Abilities.TERA_SHELL },
[Species.GREAVARD]: { 0: Abilities.UNAWARE }, [Species.GREAVARD]: { 0: Abilities.UNAWARE },
[Species.FLAMIGO]: { 0: Abilities.MOXIE }, [Species.FLAMIGO]: { 0: Abilities.MOXIE },
[Species.CETODDLE]: { 0: Abilities.REFRIGERATE }, [Species.CETODDLE]: { 0: Abilities.REFRIGERATE },

View File

@ -92,6 +92,7 @@ export class SpeciesFormEvolution {
public item: EvolutionItem | null; public item: EvolutionItem | null;
public condition: SpeciesEvolutionCondition | null; public condition: SpeciesEvolutionCondition | null;
public wildDelay: SpeciesWildEvolutionDelay; 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) { constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
this.speciesId = speciesId; this.speciesId = speciesId;
@ -101,6 +102,23 @@ export class SpeciesFormEvolution {
this.item = item || EvolutionItem.NONE; this.item = item || EvolutionItem.NONE;
this.condition = condition; this.condition = condition;
this.wildDelay = wildDelay ?? SpeciesWildEvolutionDelay.NONE; 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[]) { constructor(weatherTypes: WeatherType[]) {
super(() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1); super(() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1);
this.weatherTypes = weatherTypes; this.weatherTypes = weatherTypes;
this.description = i18next.t("pokemonEvolutions:weather");
} }
} }
@ -1377,7 +1396,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
], ],
[Species.TANDEMAUS]: [ [Species.TANDEMAUS]: [
new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new TandemausEvolutionCondition()), 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]: [ [Species.FIDOUGH]: [
new SpeciesEvolution(Species.DACHSBUN, 26, null, null) new SpeciesEvolution(Species.DACHSBUN, 26, null, null)
@ -1540,7 +1559,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
], ],
[Species.DUNSPARCE]: [ [Species.DUNSPARCE]: [
new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new DunsparceEvolutionCondition(), SpeciesWildEvolutionDelay.LONG), 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]: [ [Species.GLIGAR]: [
new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new TimeOfDayEvolutionCondition("night") /* Razor fang at night*/, SpeciesWildEvolutionDelay.VERY_LONG) 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.YANMA]: 3,
[Species.WOOPER]: 2, [Species.WOOPER]: 2,
[Species.MURKROW]: 3, [Species.MURKROW]: 3,
[Species.MISDREAVUS]: 2, [Species.MISDREAVUS]: 3,
[Species.UNOWN]: 1, [Species.UNOWN]: 1,
[Species.GIRAFARIG]: 3, [Species.GIRAFARIG]: 3,
[Species.PINECO]: 2, [Species.PINECO]: 2,
@ -245,7 +245,7 @@ export const speciesStarterCosts = {
[Species.KRICKETOT]: 1, [Species.KRICKETOT]: 1,
[Species.SHINX]: 2, [Species.SHINX]: 2,
[Species.BUDEW]: 3, [Species.BUDEW]: 3,
[Species.CRANIDOS]: 3, [Species.CRANIDOS]: 2,
[Species.SHIELDON]: 3, [Species.SHIELDON]: 3,
[Species.BURMY]: 2, [Species.BURMY]: 2,
[Species.COMBEE]: 2, [Species.COMBEE]: 2,
@ -274,7 +274,7 @@ export const speciesStarterCosts = {
[Species.FINNEON]: 1, [Species.FINNEON]: 1,
[Species.MANTYKE]: 2, [Species.MANTYKE]: 2,
[Species.SNOVER]: 2, [Species.SNOVER]: 2,
[Species.ROTOM]: 5, [Species.ROTOM]: 4,
[Species.UXIE]: 5, [Species.UXIE]: 5,
[Species.MESPRIT]: 5, [Species.MESPRIT]: 5,
[Species.AZELF]: 6, [Species.AZELF]: 6,
@ -287,7 +287,7 @@ export const speciesStarterCosts = {
[Species.PHIONE]: 4, [Species.PHIONE]: 4,
[Species.MANAPHY]: 7, [Species.MANAPHY]: 7,
[Species.DARKRAI]: 7, [Species.DARKRAI]: 7,
[Species.SHAYMIN]: 5, [Species.SHAYMIN]: 6,
[Species.ARCEUS]: 9, [Species.ARCEUS]: 9,
[Species.VICTINI]: 7, [Species.VICTINI]: 7,

View File

@ -1752,7 +1752,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
super.onAdd(pokemon); super.onAdd(pokemon);
let highestStat: EffectiveStat; 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) { if (value > highestValue) {
highestStat = EFFECTIVE_STATS[i]; highestStat = EFFECTIVE_STATS[i];
return value; return value;
@ -1763,15 +1763,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
highestStat = highestStat!; // tell TS compiler it's defined! highestStat = highestStat!; // tell TS compiler it's defined!
this.stat = highestStat; this.stat = highestStat;
switch (this.stat) { this.multiplier = this.stat === Stat.SPD ? 1.5 : 1.3;
case Stat.SPD:
this.multiplier = 1.5;
break;
default:
this.multiplier = 1.3;
break;
}
globalScene.queueMessage(i18next.t("battlerTags:highestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: i18next.t(getStatKey(highestStat)) }), null, false, null, true); 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. * 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 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} * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | Moves.TELEKINESIS}
*/ */
export class TelekinesisTag extends BattlerTag { 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. * 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 * @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(); return new GrudgeTag();
case BattlerTagType.PSYCHO_SHIFT: case BattlerTagType.PSYCHO_SHIFT:
return new PsychoShiftTag(); return new PsychoShiftTag();
case BattlerTagType.MAGIC_COAT:
return new MagicCoatTag();
case BattlerTagType.NONE: case BattlerTagType.NONE:
default: default:
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); 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 type { GameMode } from "#app/game-mode";
import { applyChallenges, ChallengeType } from "./challenge"; import { applyChallenges, ChallengeType } from "./challenge";
import { SwitchType } from "#enums/switch-type"; import { SwitchType } from "#enums/switch-type";
import { StatusEffect } from "enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
export enum MoveCategory { 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) */ /** Indicates a move is able to bypass its target's Substitute (if the target has one) */
IGNORE_SUBSTITUTE = 1 << 17, IGNORE_SUBSTITUTE = 1 << 17,
/** Indicates a move is able to be redirected to allies in a double battle if the attacker faints */ /** 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; type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
@ -610,6 +612,16 @@ export default class Move implements Localizable {
return this; 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 * 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 * @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 { export class VariableAtkAttr extends MoveAttr {
constructor() { constructor() {
super(); super();
@ -4559,7 +4634,8 @@ export class TeraMoveCategoryAttr extends VariableMoveCategoryAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const category = (args[0] as Utils.NumberHolder); 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; category.value = MoveCategory.PHYSICAL;
return true; return true;
} }
@ -5331,6 +5407,7 @@ export class AddBattlerTagAttr extends MoveEffectAttr {
case BattlerTagType.INGRAIN: case BattlerTagType.INGRAIN:
case BattlerTagType.IGNORE_ACCURACY: case BattlerTagType.IGNORE_ACCURACY:
case BattlerTagType.AQUA_RING: case BattlerTagType.AQUA_RING:
case BattlerTagType.MAGIC_COAT:
return 3; return 3;
case BattlerTagType.PROTECTED: case BattlerTagType.PROTECTED:
case BattlerTagType.FLYING: case BattlerTagType.FLYING:
@ -8333,7 +8410,8 @@ export function initMoves() {
.attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH)
.ignoresSubstitute() .ignoresSubstitute()
.hidesTarget() .hidesTarget()
.windMove(), .windMove()
.reflectable(),
new ChargingAttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) new ChargingAttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1)
.chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" })) .chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" }))
.chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .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) new AttackMove(Moves.ROLLING_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1)
.attr(FlinchAttr), .attr(FlinchAttr),
new StatusMove(Moves.SAND_ATTACK, Type.GROUND, 100, 15, -1, 0, 1) 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) new AttackMove(Moves.HEADBUTT, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1)
.attr(FlinchAttr), .attr(FlinchAttr),
new AttackMove(Moves.HORN_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1), new AttackMove(Moves.HORN_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1),
@ -8386,7 +8465,8 @@ export function initMoves() {
.recklessMove(), .recklessMove(),
new StatusMove(Moves.TAIL_WHIP, Type.NORMAL, 100, 30, -1, 0, 1) new StatusMove(Moves.TAIL_WHIP, Type.NORMAL, 100, 30, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], -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) new AttackMove(Moves.POISON_STING, Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON) .attr(StatusEffectAttr, StatusEffect.POISON)
.makesContact(false), .makesContact(false),
@ -8399,30 +8479,36 @@ export function initMoves() {
.makesContact(false), .makesContact(false),
new StatusMove(Moves.LEER, Type.NORMAL, 100, 30, -1, 0, 1) new StatusMove(Moves.LEER, Type.NORMAL, 100, 30, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], -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) new AttackMove(Moves.BITE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1)
.attr(FlinchAttr) .attr(FlinchAttr)
.bitingMove(), .bitingMove(),
new StatusMove(Moves.GROWL, Type.NORMAL, 100, 40, -1, 0, 1) new StatusMove(Moves.GROWL, Type.NORMAL, 100, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.soundBased() .soundBased()
.target(MoveTarget.ALL_NEAR_ENEMIES), .target(MoveTarget.ALL_NEAR_ENEMIES)
.reflectable(),
new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1) new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1)
.attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH)
.soundBased() .soundBased()
.hidesTarget(), .hidesTarget()
.reflectable(),
new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1) new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP) .attr(StatusEffectAttr, StatusEffect.SLEEP)
.soundBased(), .soundBased()
.reflectable(),
new StatusMove(Moves.SUPERSONIC, Type.NORMAL, 55, 20, -1, 0, 1) new StatusMove(Moves.SUPERSONIC, Type.NORMAL, 55, 20, -1, 0, 1)
.attr(ConfuseAttr) .attr(ConfuseAttr)
.soundBased(), .soundBased()
.reflectable(),
new AttackMove(Moves.SONIC_BOOM, Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1) new AttackMove(Moves.SONIC_BOOM, Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1)
.attr(FixedDamageAttr, 20), .attr(FixedDamageAttr, 20),
new StatusMove(Moves.DISABLE, Type.NORMAL, 100, 20, -1, 0, 1) new StatusMove(Moves.DISABLE, Type.NORMAL, 100, 20, -1, 0, 1)
.attr(AddBattlerTagAttr, BattlerTagType.DISABLED, false, true) .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) .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) new AttackMove(Moves.ACID, Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1)
.target(MoveTarget.ALL_NEAR_ENEMIES), .target(MoveTarget.ALL_NEAR_ENEMIES),
@ -8475,7 +8561,8 @@ export function initMoves() {
.triageMove(), .triageMove(),
new StatusMove(Moves.LEECH_SEED, Type.GRASS, 90, 10, -1, 0, 1) new StatusMove(Moves.LEECH_SEED, Type.GRASS, 90, 10, -1, 0, 1)
.attr(LeechSeedAttr) .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) new SelfStatusMove(Moves.GROWTH, Type.NORMAL, -1, 20, -1, 0, 1)
.attr(GrowthStatStageChangeAttr), .attr(GrowthStatStageChangeAttr),
new AttackMove(Moves.RAZOR_LEAF, Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1) new AttackMove(Moves.RAZOR_LEAF, Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1)
@ -8489,13 +8576,16 @@ export function initMoves() {
.attr(AntiSunlightPowerDecreaseAttr), .attr(AntiSunlightPowerDecreaseAttr),
new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1) new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON) .attr(StatusEffectAttr, StatusEffect.POISON)
.powderMove(), .powderMove()
.reflectable(),
new StatusMove(Moves.STUN_SPORE, Type.GRASS, 75, 30, -1, 0, 1) new StatusMove(Moves.STUN_SPORE, Type.GRASS, 75, 30, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.powderMove(), .powderMove()
.reflectable(),
new StatusMove(Moves.SLEEP_POWDER, Type.GRASS, 75, 15, -1, 0, 1) new StatusMove(Moves.SLEEP_POWDER, Type.GRASS, 75, 15, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP) .attr(StatusEffectAttr, StatusEffect.SLEEP)
.powderMove(), .powderMove()
.reflectable(),
new AttackMove(Moves.PETAL_DANCE, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) new AttackMove(Moves.PETAL_DANCE, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1)
.attr(FrenzyAttr) .attr(FrenzyAttr)
.attr(MissEffectAttr, frenzyMissFunc) .attr(MissEffectAttr, frenzyMissFunc)
@ -8505,7 +8595,8 @@ export function initMoves() {
.target(MoveTarget.RANDOM_NEAR_ENEMY), .target(MoveTarget.RANDOM_NEAR_ENEMY),
new StatusMove(Moves.STRING_SHOT, Type.BUG, 95, 40, -1, 0, 1) new StatusMove(Moves.STRING_SHOT, Type.BUG, 95, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPD ], -2) .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) new AttackMove(Moves.DRAGON_RAGE, Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1)
.attr(FixedDamageAttr, 40), .attr(FixedDamageAttr, 40),
new AttackMove(Moves.FIRE_SPIN, Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 1) 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), .attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new StatusMove(Moves.THUNDER_WAVE, Type.ELECTRIC, 90, 20, -1, 0, 1) new StatusMove(Moves.THUNDER_WAVE, Type.ELECTRIC, 90, 20, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.attr(RespectAttackTypeImmunityAttr), .attr(RespectAttackTypeImmunityAttr)
.reflectable(),
new AttackMove(Moves.THUNDER, Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1) new AttackMove(Moves.THUNDER, Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.attr(ThunderAccuracyAttr) .attr(ThunderAccuracyAttr)
@ -8538,13 +8630,15 @@ export function initMoves() {
.chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND), .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND),
new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1) new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.TOXIC) .attr(StatusEffectAttr, StatusEffect.TOXIC)
.attr(ToxicAccuracyAttr), .attr(ToxicAccuracyAttr)
.reflectable(),
new AttackMove(Moves.CONFUSION, Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1) new AttackMove(Moves.CONFUSION, Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1)
.attr(ConfuseAttr), .attr(ConfuseAttr),
new AttackMove(Moves.PSYCHIC, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) new AttackMove(Moves.PSYCHIC, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1),
new StatusMove(Moves.HYPNOSIS, Type.PSYCHIC, 60, 20, -1, 0, 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) new SelfStatusMove(Moves.MEDITATE, Type.PSYCHIC, -1, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true),
new SelfStatusMove(Moves.AGILITY, Type.PSYCHIC, -1, 30, -1, 0, 1) new SelfStatusMove(Moves.AGILITY, Type.PSYCHIC, -1, 30, -1, 0, 1)
@ -8562,7 +8656,8 @@ export function initMoves() {
.ignoresSubstitute(), .ignoresSubstitute(),
new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1) new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], -2) .attr(StatStageChangeAttr, [ Stat.DEF ], -2)
.soundBased(), .soundBased()
.reflectable(),
new SelfStatusMove(Moves.DOUBLE_TEAM, Type.NORMAL, -1, 15, -1, 0, 1) new SelfStatusMove(Moves.DOUBLE_TEAM, Type.NORMAL, -1, 15, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.EVA ], 1, true), .attr(StatStageChangeAttr, [ Stat.EVA ], 1, true),
new SelfStatusMove(Moves.RECOVER, Type.NORMAL, -1, 5, -1, 0, 1) 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(AddBattlerTagAttr, BattlerTagType.MINIMIZED, true, false)
.attr(StatStageChangeAttr, [ Stat.EVA ], 2, true), .attr(StatStageChangeAttr, [ Stat.EVA ], 2, true),
new StatusMove(Moves.SMOKESCREEN, Type.NORMAL, 100, 20, -1, 0, 1) 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) 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) new SelfStatusMove(Moves.WITHDRAW, Type.WATER, -1, 40, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true),
new SelfStatusMove(Moves.DEFENSE_CURL, Type.NORMAL, -1, 40, -1, 0, 1) 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) new SelfStatusMove(Moves.AMNESIA, Type.PSYCHIC, -1, 20, -1, 0, 1)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], 2, true), .attr(StatStageChangeAttr, [ Stat.SPDEF ], 2, true),
new StatusMove(Moves.KINESIS, Type.PSYCHIC, 80, 15, -1, 0, 1) 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) new SelfStatusMove(Moves.SOFT_BOILED, Type.NORMAL, -1, 5, -1, 0, 1)
.attr(HealAttr, 0.5) .attr(HealAttr, 0.5)
.triageMove(), .triageMove(),
@ -8647,14 +8745,16 @@ export function initMoves() {
.condition(failOnGravityCondition) .condition(failOnGravityCondition)
.recklessMove(), .recklessMove(),
new StatusMove(Moves.GLARE, Type.NORMAL, 100, 30, -1, 0, 1) 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) new AttackMove(Moves.DREAM_EATER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1)
.attr(HitHealAttr) .attr(HitHealAttr)
.condition(targetSleptOrComatoseCondition) .condition(targetSleptOrComatoseCondition)
.triageMove(), .triageMove(),
new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1) new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON) .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) new AttackMove(Moves.BARRAGE, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1)
.attr(MultiHitAttr) .attr(MultiHitAttr)
.makesContact(false) .makesContact(false)
@ -8663,7 +8763,8 @@ export function initMoves() {
.attr(HitHealAttr) .attr(HitHealAttr)
.triageMove(), .triageMove(),
new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1) 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) new ChargingAttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1)
.chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" }))
.attr(HighCritAttr) .attr(HighCritAttr)
@ -8682,9 +8783,11 @@ export function initMoves() {
.punchingMove(), .punchingMove(),
new StatusMove(Moves.SPORE, Type.GRASS, 100, 15, -1, 0, 1) new StatusMove(Moves.SPORE, Type.GRASS, 100, 15, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.SLEEP) .attr(StatusEffectAttr, StatusEffect.SLEEP)
.powderMove(), .powderMove()
.reflectable(),
new StatusMove(Moves.FLASH, Type.NORMAL, 100, 20, -1, 0, 1) 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) new AttackMove(Moves.PSYWAVE, Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1)
.attr(RandomLevelDamageAttr), .attr(RandomLevelDamageAttr),
new SelfStatusMove(Moves.SPLASH, Type.NORMAL, -1, 40, -1, 0, 1) new SelfStatusMove(Moves.SPLASH, Type.NORMAL, -1, 40, -1, 0, 1)
@ -8743,7 +8846,8 @@ export function initMoves() {
.attr(StealHeldItemChanceAttr, 0.3), .attr(StealHeldItemChanceAttr, 0.3),
new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2) new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2)
.condition(failIfGhostTypeCondition) .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) new StatusMove(Moves.MIND_READER, Type.NORMAL, -1, 5, -1, 0, 2)
.attr(IgnoreAccuracyAttr), .attr(IgnoreAccuracyAttr),
new StatusMove(Moves.NIGHTMARE, Type.GHOST, 100, 15, -1, 0, 2) 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) new StatusMove(Moves.COTTON_SPORE, Type.GRASS, 100, 40, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.SPD ], -2) .attr(StatStageChangeAttr, [ Stat.SPD ], -2)
.powderMove() .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) new AttackMove(Moves.REVERSAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2)
.attr(LowHpPowerAttr), .attr(LowHpPowerAttr),
new StatusMove(Moves.SPITE, Type.GHOST, 100, 10, -1, 0, 2) new StatusMove(Moves.SPITE, Type.GHOST, 100, 10, -1, 0, 2)
.ignoresSubstitute() .ignoresSubstitute()
.attr(ReducePpMoveAttr, 4), .attr(ReducePpMoveAttr, 4)
.reflectable(),
new AttackMove(Moves.POWDER_SNOW, Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2) new AttackMove(Moves.POWDER_SNOW, Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2)
.attr(StatusEffectAttr, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.FREEZE)
.target(MoveTarget.ALL_NEAR_ENEMIES), .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) new AttackMove(Moves.MACH_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2)
.punchingMove(), .punchingMove(),
new StatusMove(Moves.SCARY_FACE, Type.NORMAL, 100, 10, -1, 0, 2) 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 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) 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) new SelfStatusMove(Moves.BELLY_DRUM, Type.NORMAL, -1, 10, -1, 0, 2)
.attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => { .attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => {
globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) }));
@ -8807,13 +8915,15 @@ export function initMoves() {
.ballBombMove(), .ballBombMove(),
new StatusMove(Moves.SPIKES, Type.GROUND, -1, 20, -1, 0, 2) new StatusMove(Moves.SPIKES, Type.GROUND, -1, 20, -1, 0, 2)
.attr(AddArenaTrapTagAttr, ArenaTagType.SPIKES) .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) new AttackMove(Moves.ZAP_CANNON, Type.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, 100, 0, 2)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.ballBombMove(), .ballBombMove(),
new StatusMove(Moves.FORESIGHT, Type.NORMAL, -1, 40, -1, 0, 2) new StatusMove(Moves.FORESIGHT, Type.NORMAL, -1, 40, -1, 0, 2)
.attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST)
.ignoresSubstitute(), .ignoresSubstitute()
.reflectable(),
new SelfStatusMove(Moves.DESTINY_BOND, Type.GHOST, -1, 5, -1, 0, 2) new SelfStatusMove(Moves.DESTINY_BOND, Type.GHOST, -1, 5, -1, 0, 2)
.ignoresProtect() .ignoresProtect()
.attr(DestinyBondAttr) .attr(DestinyBondAttr)
@ -8859,7 +8969,8 @@ export function initMoves() {
.attr(ProtectAttr, BattlerTagType.ENDURING) .attr(ProtectAttr, BattlerTagType.ENDURING)
.condition(failIfLastCondition), .condition(failIfLastCondition),
new StatusMove(Moves.CHARM, Type.FAIRY, 100, 20, -1, 0, 2) 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) 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 .partial() // Does not lock the user, also does not increase damage properly
.attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL), .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL),
@ -8867,7 +8978,8 @@ export function initMoves() {
.attr(SurviveDamageAttr), .attr(SurviveDamageAttr),
new StatusMove(Moves.SWAGGER, Type.NORMAL, 85, 15, -1, 0, 2) new StatusMove(Moves.SWAGGER, Type.NORMAL, 85, 15, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.ATK ], 2) .attr(StatStageChangeAttr, [ Stat.ATK ], 2)
.attr(ConfuseAttr), .attr(ConfuseAttr)
.reflectable(),
new SelfStatusMove(Moves.MILK_DRINK, Type.NORMAL, -1, 5, -1, 0, 2) new SelfStatusMove(Moves.MILK_DRINK, Type.NORMAL, -1, 5, -1, 0, 2)
.attr(HealAttr, 0.5) .attr(HealAttr, 0.5)
.triageMove(), .triageMove(),
@ -8880,11 +8992,13 @@ export function initMoves() {
.attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true),
new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2) new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2)
.condition(failIfGhostTypeCondition) .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) new StatusMove(Moves.ATTRACT, Type.NORMAL, 100, 15, -1, 0, 2)
.attr(AddBattlerTagAttr, BattlerTagType.INFATUATED) .attr(AddBattlerTagAttr, BattlerTagType.INFATUATED)
.ignoresSubstitute() .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) new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2)
.attr(BypassSleepAttr) .attr(BypassSleepAttr)
.attr(RandomMovesetMoveAttr, invalidSleepTalkMoves, false) .attr(RandomMovesetMoveAttr, invalidSleepTalkMoves, false)
@ -8931,7 +9045,8 @@ export function initMoves() {
new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2) new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2)
.attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true) .attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true)
.ignoresSubstitute() .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) new AttackMove(Moves.PURSUIT, Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2)
.partial(), // No effect implemented .partial(), // No effect implemented
new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2) new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2)
@ -8952,7 +9067,8 @@ export function initMoves() {
.attr(RemoveArenaTrapAttr), .attr(RemoveArenaTrapAttr),
new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2) new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2)
.attr(StatStageChangeAttr, [ Stat.EVA ], -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) new AttackMove(Moves.IRON_TAIL, Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2)
.attr(StatStageChangeAttr, [ Stat.DEF ], -1), .attr(StatStageChangeAttr, [ Stat.DEF ], -1),
new AttackMove(Moves.METAL_CLAW, Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2) 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) new StatusMove(Moves.TORMENT, Type.DARK, 100, 15, -1, 0, 3)
.ignoresSubstitute() .ignoresSubstitute()
.edgeCase() // Incomplete implementation because of Uproar's partial implementation .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) new StatusMove(Moves.FLATTER, Type.DARK, 100, 15, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPATK ], 1) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1)
.attr(ConfuseAttr), .attr(ConfuseAttr)
.reflectable(),
new StatusMove(Moves.WILL_O_WISP, Type.FIRE, 85, 15, -1, 0, 3) 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) new StatusMove(Moves.MEMENTO, Type.DARK, 100, 10, -1, 0, 3)
.attr(SacrificialAttrOnHit) .attr(SacrificialAttrOnHit)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -2), .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -2),
@ -9069,7 +9188,8 @@ export function initMoves() {
.attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false), .attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false),
new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3) new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3)
.ignoresSubstitute() .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) new StatusMove(Moves.HELPING_HAND, Type.NORMAL, -1, 20, -1, 5, 3)
.attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND) .attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND)
.ignoresSubstitute() .ignoresSubstitute()
@ -9092,7 +9212,12 @@ export function initMoves() {
new AttackMove(Moves.SUPERPOWER, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3) new AttackMove(Moves.SUPERPOWER, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1, true), .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1, true),
new SelfStatusMove(Moves.MAGIC_COAT, Type.PSYCHIC, -1, 15, -1, 4, 3) 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) new SelfStatusMove(Moves.RECYCLE, Type.NORMAL, -1, 10, -1, 0, 3)
.unimplemented(), .unimplemented(),
new AttackMove(Moves.REVENGE, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3) new AttackMove(Moves.REVENGE, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3)
@ -9101,7 +9226,8 @@ export function initMoves() {
.attr(RemoveScreensAttr), .attr(RemoveScreensAttr),
new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3) new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3)
.attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true) .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) 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(MovePowerMultiplierAttr, (user, target, move) => target.getHeldItems().filter(i => i.isTransferable).length > 0 ? 1.5 : 1)
.attr(RemoveHeldItemAttr, false), .attr(RemoveHeldItemAttr, false),
@ -9145,7 +9271,8 @@ export function initMoves() {
.ballBombMove(), .ballBombMove(),
new StatusMove(Moves.FEATHER_DANCE, Type.FLYING, 100, 15, -1, 0, 3) new StatusMove(Moves.FEATHER_DANCE, Type.FLYING, 100, 15, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK ], -2) .attr(StatStageChangeAttr, [ Stat.ATK ], -2)
.danceMove(), .danceMove()
.reflectable(),
new StatusMove(Moves.TEETER_DANCE, Type.NORMAL, 100, 20, -1, 0, 3) new StatusMove(Moves.TEETER_DANCE, Type.NORMAL, 100, 20, -1, 0, 3)
.attr(ConfuseAttr) .attr(ConfuseAttr)
.danceMove() .danceMove()
@ -9191,7 +9318,8 @@ export function initMoves() {
.attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER) .attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER)
.target(MoveTarget.PARTY), .target(MoveTarget.PARTY),
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3) 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) new AttackMove(Moves.AIR_CUTTER, Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3)
.attr(HighCritAttr) .attr(HighCritAttr)
.slicingMove() .slicingMove()
@ -9202,7 +9330,8 @@ export function initMoves() {
.attr(HealStatusEffectAttr, true, StatusEffect.FREEZE), .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE),
new StatusMove(Moves.ODOR_SLEUTH, Type.NORMAL, -1, 40, -1, 0, 3) new StatusMove(Moves.ODOR_SLEUTH, Type.NORMAL, -1, 40, -1, 0, 3)
.attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST)
.ignoresSubstitute(), .ignoresSubstitute()
.reflectable(),
new AttackMove(Moves.ROCK_TOMB, Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3) new AttackMove(Moves.ROCK_TOMB, Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPD ], -1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1)
.makesContact(false), .makesContact(false),
@ -9211,12 +9340,15 @@ export function initMoves() {
.windMove(), .windMove(),
new StatusMove(Moves.METAL_SOUND, Type.STEEL, 85, 40, -1, 0, 3) new StatusMove(Moves.METAL_SOUND, Type.STEEL, 85, 40, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2)
.soundBased(), .soundBased()
.reflectable(),
new StatusMove(Moves.GRASS_WHISTLE, Type.GRASS, 55, 15, -1, 0, 3) new StatusMove(Moves.GRASS_WHISTLE, Type.GRASS, 55, 15, -1, 0, 3)
.attr(StatusEffectAttr, StatusEffect.SLEEP) .attr(StatusEffectAttr, StatusEffect.SLEEP)
.soundBased(), .soundBased()
.reflectable(),
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3) 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) new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true), .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true),
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) 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), .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true),
new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3) new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3)
.condition(failIfGhostTypeCondition) .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) new StatusMove(Moves.HOWL, Type.NORMAL, -1, 40, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.ATK ], 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 1)
.soundBased() .soundBased()
@ -9317,7 +9450,8 @@ export function initMoves() {
.target(MoveTarget.BOTH_SIDES), .target(MoveTarget.BOTH_SIDES),
new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4) new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4)
.attr(ExposedMoveAttr, BattlerTagType.IGNORE_DARK) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_DARK)
.ignoresSubstitute(), .ignoresSubstitute()
.reflectable(),
new AttackMove(Moves.WAKE_UP_SLAP, Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4) 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(MovePowerMultiplierAttr, (user, target, move) => targetSleptOrComatoseCondition(user, target, move) ? 2 : 1)
.attr(HealStatusEffectAttr, false, StatusEffect.SLEEP), .attr(HealStatusEffectAttr, false, StatusEffect.SLEEP),
@ -9329,7 +9463,8 @@ export function initMoves() {
.ballBombMove(), .ballBombMove(),
new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4) new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore") .attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore")
.triageMove(), .triageMove()
.condition(failIfLastInPartyCondition),
new AttackMove(Moves.BRINE, Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4) 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), .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) 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) 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), .attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1),
new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4) new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4)
.reflectable()
.unimplemented(), .unimplemented(),
new AttackMove(Moves.FLING, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) new AttackMove(Moves.FLING, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4)
.makesContact(false) .makesContact(false)
@ -9382,14 +9518,16 @@ export function initMoves() {
.attr(LessPPMorePowerAttr), .attr(LessPPMorePowerAttr),
new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4) new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4)
.attr(AddBattlerTagAttr, BattlerTagType.HEAL_BLOCK, false, true, 5) .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) new AttackMove(Moves.WRING_OUT, Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4)
.attr(OpponentHighHpPowerAttr, 120) .attr(OpponentHighHpPowerAttr, 120)
.makesContact(), .makesContact(),
new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4) new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(AddBattlerTagAttr, BattlerTagType.POWER_TRICK, true), .attr(AddBattlerTagAttr, BattlerTagType.POWER_TRICK, true),
new StatusMove(Moves.GASTRO_ACID, Type.POISON, 100, 10, -1, 0, 4) 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) new StatusMove(Moves.LUCKY_CHANT, Type.NORMAL, -1, 30, -1, 0, 4)
.attr(AddArenaTagAttr, ArenaTagType.NO_CRIT, 5, true, true) .attr(AddArenaTagAttr, ArenaTagType.NO_CRIT, 5, true, true)
.target(MoveTarget.USER_SIDE), .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) new AttackMove(Moves.LAST_RESORT, Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4)
.attr(LastResortAttr), .attr(LastResortAttr),
new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4) 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) 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? .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) new StatusMove(Moves.TOXIC_SPIKES, Type.POISON, -1, 20, -1, 0, 4)
.attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES) .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) new StatusMove(Moves.HEART_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SwapStatStagesAttr, BATTLE_STATS) .attr(SwapStatStagesAttr, BATTLE_STATS)
.ignoresSubstitute(), .ignoresSubstitute(),
@ -9528,7 +9668,8 @@ export function initMoves() {
.attr(ClearTerrainAttr) .attr(ClearTerrainAttr)
.attr(RemoveScreensAttr, false) .attr(RemoveScreensAttr, false)
.attr(RemoveArenaTrapAttr, true) .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) new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4)
.attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5) .attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5)
.ignoresProtect() .ignoresProtect()
@ -9566,10 +9707,12 @@ export function initMoves() {
new StatusMove(Moves.CAPTIVATE, Type.NORMAL, 100, 20, -1, 0, 4) new StatusMove(Moves.CAPTIVATE, Type.NORMAL, 100, 20, -1, 0, 4)
.attr(StatStageChangeAttr, [ Stat.SPATK ], -2) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2)
.condition((user, target, move) => target.isOppositeGender(user)) .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) new StatusMove(Moves.STEALTH_ROCK, Type.ROCK, -1, 20, -1, 0, 4)
.attr(AddArenaTrapTagAttr, ArenaTagType.STEALTH_ROCK) .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) new AttackMove(Moves.GRASS_KNOT, Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4)
.attr(WeightPowerAttr) .attr(WeightPowerAttr)
.makesContact(), .makesContact(),
@ -9606,14 +9749,16 @@ export function initMoves() {
new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4) new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore") .attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore")
.danceMove() .danceMove()
.triageMove(), .triageMove()
.condition(failIfLastInPartyCondition),
new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4)
.attr(OpponentHighHpPowerAttr, 120), .attr(OpponentHighHpPowerAttr, 120),
new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4)
.attr(TrapAttr, BattlerTagType.MAGMA_STORM), .attr(TrapAttr, BattlerTagType.MAGMA_STORM),
new StatusMove(Moves.DARK_VOID, Type.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6 new StatusMove(Moves.DARK_VOID, Type.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6
.attr(StatusEffectAttr, StatusEffect.SLEEP) .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) new AttackMove(Moves.SEED_FLARE, Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2),
new AttackMove(Moves.OMINOUS_WIND, Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4) 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) => !(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))) .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.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) new StatusMove(Moves.MAGIC_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5)
.ignoresProtect() .ignoresProtect()
.target(MoveTarget.BOTH_SIDES) .target(MoveTarget.BOTH_SIDES)
@ -9686,7 +9832,8 @@ export function initMoves() {
.attr(ElectroBallPowerAttr) .attr(ElectroBallPowerAttr)
.ballBombMove(), .ballBombMove(),
new StatusMove(Moves.SOAK, Type.WATER, 100, 20, -1, 0, 5) 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) new AttackMove(Moves.FLAME_CHARGE, Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5)
.attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true),
new SelfStatusMove(Moves.COIL, Type.POISON, -1, 20, -1, 0, 5) 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) new AttackMove(Moves.FOUL_PLAY, Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5)
.attr(TargetAtkUserAtkAttr), .attr(TargetAtkUserAtkAttr),
new StatusMove(Moves.SIMPLE_BEAM, Type.NORMAL, 100, 15, -1, 0, 5) 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) 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) new StatusMove(Moves.AFTER_YOU, Type.NORMAL, -1, 15, -1, 0, 5)
.ignoresProtect() .ignoresProtect()
.ignoresSubstitute() .ignoresSubstitute()
@ -9739,7 +9888,8 @@ export function initMoves() {
new StatusMove(Moves.HEAL_PULSE, Type.PSYCHIC, -1, 10, -1, 0, 5) new StatusMove(Moves.HEAL_PULSE, Type.PSYCHIC, -1, 10, -1, 0, 5)
.attr(HealAttr, 0.5, false, false) .attr(HealAttr, 0.5, false, false)
.pulseMove() .pulseMove()
.triageMove(), .triageMove()
.reflectable(),
new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5)
.attr( .attr(
MovePowerMultiplierAttr, 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() }), .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) new StatusMove(Moves.STICKY_WEB, Type.BUG, -1, 20, -1, 0, 6)
.attr(AddArenaTrapTagAttr, ArenaTagType.STICKY_WEB) .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) new AttackMove(Moves.FELL_STINGER, Type.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6)
.attr(PostVictoryStatStageChangeAttr, [ Stat.ATK ], 3, true ), .attr(PostVictoryStatStageChangeAttr, [ Stat.ATK ], 3, true ),
new ChargingAttackMove(Moves.PHANTOM_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) 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) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN)
.ignoresProtect(), .ignoresProtect(),
new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6) 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) new StatusMove(Moves.NOBLE_ROAR, Type.NORMAL, 100, 30, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1)
.soundBased(), .soundBased()
.reflectable(),
new StatusMove(Moves.ION_DELUGE, Type.ELECTRIC, -1, 25, -1, 1, 6) new StatusMove(Moves.ION_DELUGE, Type.ELECTRIC, -1, 25, -1, 1, 6)
.attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE) .attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE)
.target(MoveTarget.BOTH_SIDES), .target(MoveTarget.BOTH_SIDES),
@ -9962,7 +10115,8 @@ export function initMoves() {
.target(MoveTarget.ALL_NEAR_OTHERS) .target(MoveTarget.ALL_NEAR_OTHERS)
.triageMove(), .triageMove(),
new StatusMove(Moves.FORESTS_CURSE, Type.GRASS, 100, 20, -1, 0, 6) 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) new AttackMove(Moves.PETAL_BLIZZARD, Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6)
.windMove() .windMove()
.makesContact(false) .makesContact(false)
@ -9976,9 +10130,11 @@ export function initMoves() {
new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, -1, 0, 6) 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(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, false, { trigger: MoveEffectTrigger.PRE_APPLY })
.attr(ForceSwitchOutAttr, true) .attr(ForceSwitchOutAttr, true)
.soundBased(), .soundBased()
.reflectable(),
new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6) 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) new AttackMove(Moves.DRAINING_KISS, Type.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6)
.attr(HitHealAttr, 0.75) .attr(HitHealAttr, 0.75)
.makesContact() .makesContact()
@ -10017,10 +10173,12 @@ export function initMoves() {
.condition(failIfLastCondition), .condition(failIfLastCondition),
new StatusMove(Moves.PLAY_NICE, Type.NORMAL, -1, 20, -1, 0, 6) new StatusMove(Moves.PLAY_NICE, Type.NORMAL, -1, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.ignoresSubstitute(), .ignoresSubstitute()
.reflectable(),
new StatusMove(Moves.CONFIDE, Type.NORMAL, -1, 20, -1, 0, 6) new StatusMove(Moves.CONFIDE, Type.NORMAL, -1, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1)
.soundBased(), .soundBased()
.reflectable(),
new AttackMove(Moves.DIAMOND_STORM, Type.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6) new AttackMove(Moves.DIAMOND_STORM, Type.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6)
.attr(StatStageChangeAttr, [ Stat.DEF ], 2, true, { firstTargetOnly: true }) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true, { firstTargetOnly: true })
.makesContact(false) .makesContact(false)
@ -10047,14 +10205,17 @@ export function initMoves() {
.condition(failIfSingleBattle) .condition(failIfSingleBattle)
.target(MoveTarget.NEAR_ALLY), .target(MoveTarget.NEAR_ALLY),
new StatusMove(Moves.EERIE_IMPULSE, Type.ELECTRIC, 100, 15, -1, 0, 6) 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) 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 }) .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) new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6)
.attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true) .attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true)
.ignoresSubstitute() .ignoresSubstitute()
.powderMove(), .powderMove()
.reflectable(),
new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6)
.chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" })) .chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" }))
.attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true),
@ -10076,7 +10237,8 @@ export function initMoves() {
.ignoresSubstitute() .ignoresSubstitute()
.target(MoveTarget.NEAR_ALLY), .target(MoveTarget.NEAR_ALLY),
new StatusMove(Moves.BABY_DOLL_EYES, Type.FAIRY, 100, 30, -1, 1, 6) 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) new AttackMove(Moves.NUZZLE, Type.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS), .attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new AttackMove(Moves.HOLD_BACK, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6) new AttackMove(Moves.HOLD_BACK, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6)
@ -10220,13 +10382,15 @@ export function initMoves() {
.punchingMove(), .punchingMove(),
new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7) 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) .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 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) new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, -1, 0, 7)
.attr(HitHealAttr, null, Stat.ATK) .attr(HitHealAttr, null, Stat.ATK)
.attr(StatStageChangeAttr, [ Stat.ATK ], -1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1)
.condition((user, target, move) => target.getStatStage(Stat.ATK) > -6) .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) new ChargingAttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7)
.chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" }))
.chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ])
@ -10236,10 +10400,12 @@ export function initMoves() {
.makesContact(false), .makesContact(false),
new StatusMove(Moves.SPOTLIGHT, Type.NORMAL, -1, 15, -1, 3, 7) new StatusMove(Moves.SPOTLIGHT, Type.NORMAL, -1, 15, -1, 3, 7)
.attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, false) .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, false)
.condition(failIfSingleBattle), .condition(failIfSingleBattle)
.reflectable(),
new StatusMove(Moves.TOXIC_THREAD, Type.POISON, 100, 20, -1, 0, 7) new StatusMove(Moves.TOXIC_THREAD, Type.POISON, 100, 20, -1, 0, 7)
.attr(StatusEffectAttr, StatusEffect.POISON) .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) new SelfStatusMove(Moves.LASER_FOCUS, Type.NORMAL, -1, 30, -1, 0, 7)
.attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false), .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false),
new StatusMove(Moves.GEAR_UP, Type.STEEL, -1, 20, -1, 0, 7) 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? (user: Pokemon, target: Pokemon, move: Move) => isNonVolatileStatusEffect(target.status?.effect!)) // TODO: is this bang correct?
.attr(HealAttr, 0.5) .attr(HealAttr, 0.5)
.attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects())
.triageMove(), .triageMove()
.reflectable(),
new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7)
.danceMove() .danceMove()
.attr(MatchUserTypeAttr), .attr(MatchUserTypeAttr),
@ -10365,14 +10532,15 @@ export function initMoves() {
new AttackMove(Moves.PRISMATIC_LASER, Type.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7) new AttackMove(Moves.PRISMATIC_LASER, Type.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7)
.attr(RechargeAttr), .attr(RechargeAttr),
new AttackMove(Moves.SPECTRAL_THIEF, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7) new AttackMove(Moves.SPECTRAL_THIEF, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7)
.ignoresSubstitute() .attr(SpectralThiefAttr)
.partial(), // Does not steal stats .ignoresSubstitute(),
new AttackMove(Moves.SUNSTEEL_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7) new AttackMove(Moves.SUNSTEEL_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7)
.ignoresAbilities(), .ignoresAbilities(),
new AttackMove(Moves.MOONGEIST_BEAM, Type.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) new AttackMove(Moves.MOONGEIST_BEAM, Type.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7)
.ignoresAbilities(), .ignoresAbilities(),
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, -1, 0, 7) 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) new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
.attr(FlinchAttr), .attr(FlinchAttr),
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7) 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) new AttackMove(Moves.PIKA_PAPOW, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7)
.attr(FriendshipPowerAttr), .attr(FriendshipPowerAttr),
new AttackMove(Moves.BOUNCY_BUBBLE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7) new AttackMove(Moves.BOUNCY_BUBBLE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7)
.attr(HitHealAttr) // Custom .attr(HitHealAttr, 1)
.triageMove() .triageMove(),
.target(MoveTarget.ALL_NEAR_ENEMIES),
new AttackMove(Moves.BUZZY_BUZZ, Type.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7) new AttackMove(Moves.BUZZY_BUZZ, Type.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS), .attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new AttackMove(Moves.SIZZLY_SLIDE, Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 7) 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 .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) new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, -1, 0, 8)
.attr(StatStageChangeAttr, [ Stat.SPD ], -1) .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) new StatusMove(Moves.MAGIC_POWDER, Type.PSYCHIC, 100, 20, -1, 0, 8)
.attr(ChangeTypeAttr, Type.PSYCHIC) .attr(ChangeTypeAttr, Type.PSYCHIC)
.powderMove(), .powderMove()
.reflectable(),
new AttackMove(Moves.DRAGON_DARTS, Type.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8) new AttackMove(Moves.DRAGON_DARTS, Type.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8)
.attr(MultiHitAttr, MultiHitType._2) .attr(MultiHitAttr, MultiHitType._2)
.makesContact(false) .makesContact(false)
@ -10672,6 +10841,7 @@ export function initMoves() {
.makesContact(false), .makesContact(false),
new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8) new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8)
.target(MoveTarget.ALL_NEAR_OTHERS) .target(MoveTarget.ALL_NEAR_OTHERS)
.reflectable()
.unimplemented(), .unimplemented(),
new StatusMove(Moves.COACHING, Type.FIGHTING, -1, 10, -1, 0, 8) new StatusMove(Moves.COACHING, Type.FIGHTING, -1, 10, -1, 0, 8)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1)
@ -10906,8 +11076,7 @@ export function initMoves() {
.attr(TeraMoveCategoryAttr) .attr(TeraMoveCategoryAttr)
.attr(TeraBlastTypeAttr) .attr(TeraBlastTypeAttr)
.attr(TeraBlastPowerAttr) .attr(TeraBlastPowerAttr)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, true, { condition: (user, target, move) => user.isTerastallized() && user.isOfType(Type.STELLAR) }) .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} */
new SelfStatusMove(Moves.SILK_TRAP, Type.BUG, -1, 10, -1, 4, 9) new SelfStatusMove(Moves.SILK_TRAP, Type.BUG, -1, 10, -1, 4, 9)
.attr(ProtectAttr, BattlerTagType.SILK_TRAP) .attr(ProtectAttr, BattlerTagType.SILK_TRAP)
.condition(failIfLastCondition), .condition(failIfLastCondition),
@ -10917,8 +11086,7 @@ export function initMoves() {
.attr(ConfuseAttr) .attr(ConfuseAttr)
.recklessMove(), .recklessMove(),
new AttackMove(Moves.LAST_RESPECTS, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) 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.arena.playerFaints : globalScene.currentBattle.enemyFaints, 100))
.attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? globalScene.currentBattle.playerFaints : globalScene.currentBattle.enemyFaints, 100))
.makesContact(false), .makesContact(false),
new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9)
.attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), .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) // Adds a real Pokemon sprite to the field (required for the animation)
globalScene.getEnemyParty().forEach(enemyPokemon => { globalScene.getEnemyParty().forEach(enemyPokemon => {
globalScene.field.remove(enemyPokemon, true); enemyPokemon.leaveField(true, true, true);
}); });
globalScene.currentBattle.enemyParty = [ oricorio ]; globalScene.currentBattle.enemyParty = [ oricorio ];
globalScene.field.add(oricorio); globalScene.field.add(oricorio);

View File

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

View File

@ -315,7 +315,7 @@ async function summonSafariPokemon() {
const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier);
if (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 // Show dialogue and transition biome
await showEncounterText(`${namespace}:transport`); await showEncounterText(`${namespace}:transport`);
await Promise.all([ animateBiomeChange(newBiome), transitionMysteryEncounterIntroVisuals() ]); await Promise.all([ animateBiomeChange(newBiome), transitionMysteryEncounterIntroVisuals() ]);
globalScene.updateBiomeWaveText();
globalScene.playBgm(); globalScene.playBgm();
await showEncounterText(`${namespace}:attacked`); await showEncounterText(`${namespace}:attacked`);

View File

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

View File

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

View File

@ -328,7 +328,8 @@ export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigge
this.move = move; this.move = move;
this.known = known; 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; 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 { canChange(pokemon: Pokemon): boolean {
@ -755,23 +756,23 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)), new SpeciesFormChange(Species.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)),
], ],
[Species.ARCEUS]: [ [Species.ARCEUS]: [
new SpeciesFormChange(Species.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)) new SpeciesFormChange(Species.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))),
], ],
[Species.DARMANITAN]: [ [Species.DARMANITAN]: [
new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true),
@ -841,23 +842,23 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true) new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true)
], ],
[Species.SILVALLY]: [ [Species.SILVALLY]: [
new SpeciesFormChange(Species.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)), 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)) new SpeciesFormChange(Species.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM)))
], ],
[Species.MINIOR]: [ [Species.MINIOR]: [
new SpeciesFormChange(Species.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true), 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 type { AnySound } from "#app/battle-scene";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { GameMode } from "#app/game-mode"; 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 * as Utils from "#app/utils";
import { uncatchableSpecies } from "#app/data/balance/biomes"; import { uncatchableSpecies } from "#app/data/balance/biomes";
import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { speciesEggMoves } from "#app/data/balance/egg-moves";
@ -32,6 +32,37 @@ export enum Region {
PALDEA 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 * Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode Species} enum given
* @param species The species to fetch * @param species The species to fetch
@ -324,8 +355,8 @@ export abstract class PokemonSpeciesForm {
return ret; return ret;
} }
getSpriteAtlasPath(female: boolean, formIndex?: number, shiny?: boolean, variant?: number): string { getSpriteAtlasPath(female: boolean, formIndex?: number, shiny?: boolean, variant?: number, back?: boolean): string {
const spriteId = this.getSpriteId(female, formIndex, shiny, variant).replace(/\_{2}/g, "/"); const spriteId = this.getSpriteId(female, formIndex, shiny, variant, back).replace(/\_{2}/g, "/");
return `${/_[1-3]$/.test(spriteId) ? "variant/" : ""}${spriteId}`; 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}` : ""}`; 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 { getSpriteKey(female: boolean, formIndex?: number, shiny?: boolean, variant?: number, back?: boolean): string {
return `pkmn__${this.getSpriteId(female, formIndex, shiny, variant)}`; return `pkmn__${this.getSpriteId(female, formIndex, shiny, variant, back)}`;
} }
abstract getFormSpriteKey(formIndex?: number): string; abstract getFormSpriteKey(formIndex?: number): string;
@ -520,10 +551,10 @@ export abstract class PokemonSpeciesForm {
return true; 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 => { return new Promise(resolve => {
const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant); const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant, back);
globalScene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant)); globalScene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant, back));
globalScene.load.audio(`${this.getCryKey(formIndex)}`, `audio/${this.getCryKey(formIndex)}.m4a`); globalScene.load.audio(`${this.getCryKey(formIndex)}`, `audio/${this.getCryKey(formIndex)}.m4a`);
globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => { globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => {
const originalWarn = console.warn; const originalWarn = console.warn;
@ -533,7 +564,7 @@ export abstract class PokemonSpeciesForm {
console.warn = originalWarn; console.warn = originalWarn;
if (!(globalScene.anims.exists(spriteKey))) { if (!(globalScene.anims.exists(spriteKey))) {
globalScene.anims.create({ globalScene.anims.create({
key: this.getSpriteKey(female, formIndex, shiny, variant), key: this.getSpriteKey(female, formIndex, shiny, variant, back),
frames: frameNames, frames: frameNames,
frameRate: 10, frameRate: 10,
repeat: -1 repeat: -1
@ -541,7 +572,7 @@ export abstract class PokemonSpeciesForm {
} else { } else {
globalScene.anims.get(spriteKey).frameRate = 10; 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()); globalScene.loadPokemonVariantAssets(spriteKey, spritePath, variant).then(() => resolve());
}); });
if (startLoad) { if (startLoad) {
@ -690,6 +721,56 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
return this.name; 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 { localize(): void {
this.name = i18next.t(`pokemon:${Species[this.speciesId].toLowerCase()}`); 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() ? 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 { export class PokemonForm extends PokemonSpeciesForm {
public formName: string; public formName: string;
public formKey: string; public formKey: string;
public formSpriteKey: string | null; 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 // 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" ]; 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, 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, 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, super(type1, type2, height, weight, ability1, ability2, abilityHidden, baseTotal, baseHp, baseAtk, baseDef, baseSpatk, baseSpdef, baseSpd,
catchRate, baseFriendship, baseExp, genderDiffs, (isStarterSelectable || !formKey)); catchRate, baseFriendship, baseExp, genderDiffs, (isStarterSelectable || !formKey));
this.formName = formName; this.formName = formName;
this.formKey = formKey; this.formKey = formKey;
this.formSpriteKey = formSpriteKey; this.formSpriteKey = formSpriteKey;
this.isUnobtainable = isUnobtainable;
} }
getFormSpriteKey(_formIndex?: number) { 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.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.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 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, 178, false, null, 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, 178), 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.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.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 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, 216, false, null, 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, 216), 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.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), 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.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.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.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.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.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.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.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.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), 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.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.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.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.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.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.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.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.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.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), 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.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.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.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 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, 230, false, null, 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, 230), 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.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), 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.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.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.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.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.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), 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.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.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.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.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.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), 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.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.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.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.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.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.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), 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.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.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.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.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.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), 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 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.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 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, 270, 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, 270), 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, 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, 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, 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, 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.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.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.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.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.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.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.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.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.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.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), 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.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 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("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("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, 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, 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, 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, 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, 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, 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, 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, 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.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), 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 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.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.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, 270, 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, 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, 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, 270, GrowthRate.MEDIUM_SLOW, null, false, true, 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, 270, false, null, 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, 270), 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 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, 324, false, null, 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, 324), 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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.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.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.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.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.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.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.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.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.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), 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.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.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.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.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.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), 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.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 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("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.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), 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.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.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.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.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.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), 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 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("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("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, 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, 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 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("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 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 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, 270, false, null, 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, 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, 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 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), 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.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.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.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.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 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("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), 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("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 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 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, 239, false, null, true), 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, 239, false, "", 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, 239), 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.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), 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("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 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 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, 185, false, null, true), 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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.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), 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("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 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 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, 248, false, null, true), 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, 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, 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, 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, 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, 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, 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, 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, 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.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), 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.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 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("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("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("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, 300), 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, 300, false, "complete"), 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 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("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 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 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, 270, false, null, true), 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, 270), 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.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), 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.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.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.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.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.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), 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 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("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.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), 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("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("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("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("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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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.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), 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.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 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("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("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, 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, 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, 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, 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 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), 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 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("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.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), 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.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 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("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 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("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.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), 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.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 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("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 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("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 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), 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.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 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("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("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, 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, 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.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), 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.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 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("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("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, 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, 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.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), 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_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_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.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_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_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), 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 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.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